一直在四处寻找,对 golang 还是个新手,PHP 和 ruby 有一个解包函数,可以将二进制文件解包到数组中。我想弄清楚如何在 golang 中执行以下操作。$test = "\01\00\02\03";print_r(unpack("C*", $test)); // [1,0,2,3]或者s = "\01\00\02\03"arr = s.unpack("C*")p(arr) # [1,0,2,3]使用 golang 执行此操作的最佳方法是什么?
1 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
请首先注意,您的 PHP 字符串是由 4 个字节, ,"\01\00\02\03"
组成的字符串,因为它们被解释为八进制。\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)
}
输出:
[1 0 2 3]
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消