0
Я сейчас пишу массив []byte
с Golang в файл (код ниже). После того, как я написал его в файл, я хочу открыть файл в PHP и прочитать строку. Однако, поскольку он закодирован, мне нужно использовать unpack
? Я не уверен, какой формат (ы) использовать.Golang [] byte to PHP string
Вот мой Golang код:
var jsonlen uint16
// 16KB output buffer
wbuf := bufio.NewWriterSize(os.Stdout, 16384)
// write the magic bytes
fmt.Print(MagicBytes)
// encode and write json
json, err := json.Marshal(Metadata)
if err != nil {
fmt.Println("Failed to encode the Metadata JSON:", err)
return
}
jsonlen = uint16(len(json))
err = binary.Write(wbuf, binary.LittleEndian, &jsonlen)
if err != nil {
fmt.Println("error writing output: ", err)
return
}
err = binary.Write(wbuf, binary.LittleEndian, &json)
if err != nil {
fmt.Println("error writing output: ", err)
return
}
не написал какого-либо постоянного кода PHP пока так не любой, чтобы показать здесь.
правило: ** Никогда ** ** ** никогда не возиться с порядком байтов. Никогда. Просто напишите байтовый фрагмент 'json'. Если вам действительно нужно написать начальную длину: если возможно, используйте десятичную (например, 4 байта, например «2371»), а не бинарный формат. Для получения дополнительной информации см. Http://commandcenter.blogspot.ch/2012/04/byte-order-fallacy.html – Volker
@ Volker довольно новичок в этом материале, поэтому не знаю, что это значит, извините, ха-ха. Я пишу 4 байта в начале файла для идентификации файла, после чего будет написан uint16, содержащий длину JSON, после чего будет записан JSON, а затем остальная часть файла будет продолжена. Это измененный аудиоформат. – cheese5505
Если вы не знаете порядка байтов и этого материала, почему вы используете binary.Write? Не делай этого. – Volker