什么是golang相当于PHP/Ruby的解包("C*",.)?

ext*_*xts 1 go

一直在搜索,仍然是golang的新手,PHP和ruby有一个解包函数,可以将二进制文件解压缩到一个数组中.我想弄清楚如何在golang中执行以下操作.

$test = "\01\00\02\03";
print_r(unpack("C*", $test)); // [1,0,2,3]
Run Code Online (Sandbox Code Playgroud)

要么

s = "\01\00\02\03"
arr = s.unpack("C*")
p(arr) # [1,0,2,3]
Run Code Online (Sandbox Code Playgroud)

使用golang执行此操作的最佳方法是什么?

Ste*_*ich 6

请注意:第一,你的PHP字符串"\01\00\02\03"是由4个字节的字符串\x01,\x00,\x02,\x03因为"\01"被解释为八进制.有关详细信息,请参阅双引号字符串的文档.

在Go中语法\01不正确.与C一样,八进制序列需要有3位数,即\001.因此,PHP字符串"\01\00\02\03"在Go中"\001\000\002\003"(也可以在PHP中使用).考虑到这一点,拆包很容易,并且不需要特殊功能unpack:

package main
import "fmt"
func main() {
    s := "\001\000\002\003"
    b := []byte(s)
    fmt.Print(b)
}
Run Code Online (Sandbox Code Playgroud)

输出:

[1 0 2 3]
Run Code Online (Sandbox Code Playgroud)