2016-03-04 9 views
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 пока так не любой, чтобы показать здесь.

+1

правило: ** Никогда ** ** ** никогда не возиться с порядком байтов. Никогда. Просто напишите байтовый фрагмент 'json'. Если вам действительно нужно написать начальную длину: если возможно, используйте десятичную (например, 4 байта, например «2371»), а не бинарный формат. Для получения дополнительной информации см. Http://commandcenter.blogspot.ch/2012/04/byte-order-fallacy.html – Volker

+0

@ Volker довольно новичок в этом материале, поэтому не знаю, что это значит, извините, ха-ха. Я пишу 4 байта в начале файла для идентификации файла, после чего будет написан uint16, содержащий длину JSON, после чего будет записан JSON, а затем остальная часть файла будет продолжена. Это измененный аудиоформат. – cheese5505

+1

Если вы не знаете порядка байтов и этого материала, почему вы используете binary.Write? Не делай этого. – Volker

ответ