猿问

什么是 golang 等同于 PHP/Ruby 的 unpack("C*", . )?

一直在四处寻找,对 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 执行此操作的最佳方法是什么?


慕雪6442864
浏览 106回答 1
1回答

白猪掌柜的

请首先注意,您的 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 mainimport "fmt"func main() {    s := "\001\000\002\003"    b := []byte(s)    fmt.Print(b)}输出:[1 0 2 3]
随时随地看视频慕课网APP

相关分类

Go
我要回答