英文:
Convert from integer to byte array using encoding/binary using Go based on endianness
问题
我已经编写了一个名为FromBytes
的函数,它将字节转换为整数格式,并根据字节序将其传递给IP4()
函数,代码如下所示:
type IP4 uint32
func FromBytes(ip []byte) IP4 {
var pi IP4
buf := bytes.NewReader(ip)
if <little endian> {
err := binary.Read(buf, binary.LittleEndian, &pi)
} else {
err := binary.Read(buf, binary.BigEndian, &pi)
}
if err != nil {
fmt.Println("binary.Read failed:", err)
}
return IP4(pi)
}
我需要帮助编写一个函数,将整数转换为字节:
func (ip IP4) Octets() (a, b, c, d byte) {
if <little endian> {
// 用于小端字节序的整数转换为字节的代码
} else {
// 用于大端字节序的整数转换为字节的代码
}
return
}
请注意,上述代码中的<little endian>
和<big endian>
是占位符,你需要根据实际情况替换它们。
英文:
I have written the function FromBytes
which converts bytes to integer format and passes it to IP4()
based on endianness as follows:
type IP4 uint32
func FromBytes(ip []byte) IP4 {
var pi IP4
buf := bytes.NewReader(ip)
if <little endian>
err := binary.Read(buf, binary.LittleEndian, &pi)
else
err := binary.Read(buf, binary.BigEndian, &pi)
if err != nil {
fmt.Println("binary.Read failed:", err)
}
return IP4(pi)
}
I need help writing a function which will convert from integer to bytes:
func (ip IP4) Octets() (a, b, c, d byte) {
if <little endian>
// code to convert from integer to bytes for little endian
} else {
// code to convert from integer to bytes for big endian
}
return
}
答案1
得分: 4
b := make([]byte, 4) // 为uint32准备4个字节。
binary.BigEndian.PutUint32(b, uint32(yourIP4))
// 和
binary.LittleEndian.PutUint32(b, uint32(yourIP4))
英文:
b := make([]byte, 4) // 4 bytes for uint32.
binary.BigEndian.PutUint32(b, uint32(yourIP4))
// and
binary.LittleEndian.PutUint32(b, uint32(yourIP4))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论