Golang中_byteswap_ulong的等价物是什么? 它是否作为包存在?
我尝试使用二进制包并与读者一起玩,但无法使其正常工作。我需要在uint64变量中交换字节。
输入为2832779.输出应为8b392b。
答案 0 :(得分:2)
包编码/二进制具有ByteOrder类型 http://golang.org/pkg/encoding/binary/#ByteOrder
binary.LittleEndian
和
binary.BigEndian
让你换成不同的订单。
它不完全相同,不仅仅是交换字节。但是可以得到你所需要的东西。
答案 1 :(得分:0)
正如@David所说,使用binary.ByteOrder类型
package main
import (
"encoding/binary"
"fmt"
)
func main() {
value := make([]byte, 4)
// need to know the byte ordering ahead of time
binary.LittleEndian.PutUint32(value, 0x12345678)
fmt.Printf("%#v\n", value)
fmt.Printf("Big Endian Representation, 0x%X\n", binary.BigEndian.Uint32(value))
fmt.Printf("Little Endian Representation, 0x%X\n", binary.LittleEndian.Uint32(value))
}
这将输出:
[]byte{0x78, 0x56, 0x34, 0x12}
Big Endian Representation, 0x78563412
Little Endian Representation, 0x12345678
这些是小端服务器上的big-endian和little-endian表示。
答案 2 :(得分:0)
Golang 1.9在软件包ReverseBytes
中添加了math/bits
函数家族。
package main
import (
"fmt"
"math/bits"
)
func main() {
fmt.Printf("%x", bits.ReverseBytes32(2832779))
}