试图将整数插入字节数组
trying to insert integer into byte array
我有一个字节数组
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
我想弄清楚如何用包含 300
.
的两个字节替换 app0[13:15]
请帮忙。我尝试了以下但它甚至无法编译:
app0[13:15] = []byte(300)
我有点搞不懂你想用什么做
app0[13:15] = []byte(300)
单个字节不能容纳值 300,而您有一个字节片。我假设您希望将值 300 转换为两个字节:
import (
"fmt"
"bytes"
"encoding/binary"
)
func main() {
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
app0 = append(app0[:13], append(intToBytes(uint16(300)), app0[15:]...)...)
fmt.Println(app0)
}
func intToBytes(i uint16) []byte {
buf := new(bytes.Buffer)
_ = binary.Write(buf, binary.LittleEndian, i)
return buf.Bytes()
}
https://play.golang.org/p/qADHwCCFQG
这里的技巧是你必须实际得到一个字节数组,然后你可以使用可变参数运算符(...
)然后使用append
函数来替换数组的内部元素.
例如,
package main
import "fmt"
func main() {
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
fmt.Println(app0)
app0[13], app0[14] = 300>>8, 300&0xFF
fmt.Println(app0)
}
输出:
[255 224 0 16 74 70 73 70 0 1 1 1 0 0 0 0 0 0]
[255 224 0 16 74 70 73 70 0 1 1 1 0 1 44 0 0 0]
我有一个字节数组
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
我想弄清楚如何用包含 300
.
app0[13:15]
请帮忙。我尝试了以下但它甚至无法编译:
app0[13:15] = []byte(300)
我有点搞不懂你想用什么做
app0[13:15] = []byte(300)
单个字节不能容纳值 300,而您有一个字节片。我假设您希望将值 300 转换为两个字节:
import (
"fmt"
"bytes"
"encoding/binary"
)
func main() {
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
app0 = append(app0[:13], append(intToBytes(uint16(300)), app0[15:]...)...)
fmt.Println(app0)
}
func intToBytes(i uint16) []byte {
buf := new(bytes.Buffer)
_ = binary.Write(buf, binary.LittleEndian, i)
return buf.Bytes()
}
https://play.golang.org/p/qADHwCCFQG
这里的技巧是你必须实际得到一个字节数组,然后你可以使用可变参数运算符(...
)然后使用append
函数来替换数组的内部元素.
例如,
package main
import "fmt"
func main() {
app0 := []byte("\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01\x01\x01\x00\x00\x00\x00\x00\x00")
fmt.Println(app0)
app0[13], app0[14] = 300>>8, 300&0xFF
fmt.Println(app0)
}
输出:
[255 224 0 16 74 70 73 70 0 1 1 1 0 0 0 0 0 0]
[255 224 0 16 74 70 73 70 0 1 1 1 0 1 44 0 0 0]