为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕雪6442864 2023-05-15 09:45:59
一直在四处寻找,对 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]


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信