在字节数组中插入十六进制时出现问题

我正在尝试将十六进制插入字节数组。


十六进制应该像下面这样由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 自动创建此字节数组?


宝慕林4294392
浏览 139回答 2
2回答

紫衣仙女

试试这个:net.ParseMAC(mac)package mainimport (    "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

您需要将字符串(格式)转换为字节。如果您不添加前缀,这实际上可能会更容易。我怀疑这将是要走的路。"0x12""0x"strconf.ParseUint现在,对于MAC地址,您可能最好按照@wasmup的建议使用,因为有多种可能的MAC格式(我已经看到至少12:34:56:78:9a:bc和1234.5678.9abcd)。net.ParseMAC
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go