使用Go语言根据字节序将整数转换为字节数组,可以使用encoding/binary包。

huangapple go评论76阅读模式
英文:

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 &lt;little endian&gt;
            err := binary.Read(buf, binary.LittleEndian, &amp;pi)
       else
            err := binary.Read(buf, binary.BigEndian, &amp;pi)
       if err != nil {
               fmt.Println(&quot;binary.Read failed:&quot;, 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 &lt;little endian&gt;
		// 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))

huangapple
  • 本文由 发表于 2016年11月10日 12:29:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/40519995.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定