我正在尝试将十六进制插入字节数组。十六进制应该像下面这样由mac addr组成,不要将mac地址转换为十六进制,只需在每个两个数字前面添加“0x”。mac = “00:19:10:08:FE:08” 十六进制 = 0x00、0x19、0x10、0x08、0xFE、0x08我制作了如下字符串切片以制作十六进制数组。mac := "00:19:10:08:FE:08"a := strings.Split(mac, ":")for i, v := range a { a[i] = "0x" + v}fmt.Println(a) // output: [0x00 0x19 0x10 0x08 0xFE 0x08]我将字符串切片合并到字节切片中。myByte := []byte{0x15, 0x1a}myByte = append(myByte, a)但发生错误,如下所示,“不能使用(类型[]字符串)作为追加中的类型字节”。简而言之,我想用mac地址(“00:19:10:08:FE:08”)制作字节数组。字节数组应该是 []byte{0x00, 0x19, 0x19, 0x08, 0xfe, 0x08} 如何使用 Go 自动创建此字节数组?
2 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
试试这个:net.ParseMAC(mac)
package main
import (
"fmt"
"log"
"net"
)
func main() {
mac := "00:19:10:08:FE:08"
hw, err := net.ParseMAC(mac)
if err != nil {
log.Fatal(err)
}
fmt.Println(hw)
// type HardwareAddr []byte
}
烙印99
TA贡献1829条经验 获得超13个赞
您需要将字符串(格式)转换为字节。如果您不添加前缀,这实际上可能会更容易。我怀疑这将是要走的路。"0x12""0x"strconf.ParseUint
现在,对于MAC地址,您可能最好按照@wasmup的建议使用,因为有多种可能的MAC格式(我已经看到至少12:34:56:78:9a:bc和1234.5678.9abcd)。net.ParseMAC
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报
0/150
提交
取消
