Какой эквивалент Голанга для распаковки PHP / Ruby ("C *",.)? - PullRequest
0 голосов
/ 25 ноября 2018

Поиски, все еще новичок в 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 Ответ

0 голосов
/ 25 ноября 2018

Обратите внимание, что сначала строка 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)
}

Вывод:

[1 0 2 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...