如何将go的类型从uint8转换为unit32?
只需代码:
package main
import (
"fmt"
)
func main() {
uInt8 := []uint8{0,1,2,3}
var uInt32 uint32
uInt32 = uint32(uInt8)
fmt.Printf("%v to %v\n", uInt8, uInt32)
}
〜> 6g test.go && 6l -o test test.6 && ./test
test.go:10:无法将uInt8(类型[] uint8)转换为uint32类型
package main
import (
"encoding/binary"
"fmt"
)
func main() {
u8 := []uint8{0, 1, 2, 3}
u32LE := binary.LittleEndian.Uint32(u8)
fmt.Println("little-endian:", u8, "to", u32LE)
u32BE := binary.BigEndian.Uint32(u8)
fmt.Println("big-endian: ", u8, "to", u32BE)
}
输出:
little-endian: [0 1 2 3] to 50462976
big-endian: [0 1 2 3] to 66051
Go 二进制包功能通过一系列移位实现。
func (littleEndian) Uint32(b []byte) uint32 {
return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
}
func (bigEndian) Uint32(b []byte) uint32 {
return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24
}
问题内容: 所以,我需要你的帮助。我找不到关于那个话题的任何东西。Golang是一种新鲜出炉的语言,因此对于像我这样的新手来说很难快速找到答案。 问题答案: 预先定义的Go 类型大小是特定于实现的,是32位还是64位(数字类型)。 这是将big-endian s 转换为s(s)的示例。 输出: 要么
问题内容: http://play.golang.org/p/BoZkHC8_uA 我想将uint8转换为字符串,但不知道如何。 这给我 任何想法? 问题答案: 只需将其转换:
问题内容: 我有一个我使用的,因为我想在逻辑上区分不同类型的字节。 我可以轻松地进行转换, 但我找不到转换或转换切片的方法:失败。 这样的事情可能吗?内存中的位是相同的(对吗?),因此应该采取某种方法,除非逐字节复制到新对象中。 例如,这些都不起作用:http : //play.golang.org/p/WPhD3KufR8 问题答案: 您不能将自己的myByte的片转换为字节的片。 但是您可以拥
问题内容: 在围棋,什么是转换的最佳策略来?我很难比较两者 在下一行 问题答案: 您将其转换为类型“转换” 比较值时,您始终希望将较小的类型转换为较大的类型。转换为其他方式可能会截断该值: 或者,将 值转换为,可以使用 如果系统上类型的最大值溢出,则将无法正确执行。
问题内容: 我正在尝试将字节切片转换为GoLang中的。我找不到在线解决此问题的方法。我见过先转换为字符串然后转换为a的建议,但这似乎不起作用,它失去了它的值,最后以零结束。 例: 而且它不起作用… 问题答案: 例如, 输出:
问题内容: 如何将一个4字节的数组转换为相应的Int? 例: 输入: 输出: 我在互联网上发现的某些代码不起作用: 问题答案: 有两个问题: 在64位平台上是64位整数,您的输入数据只有32位。 在所有当前的Swift平台上使用小尾数表示法,您输入的是大尾数。 话虽如此,以下方法会起作用: 或在Swift 3中使用: 使用一些缓冲区指针魔术,您可以避免中间复制到对象(Swift 2): 有关此方法