2016-03-04 59 views
0

我正在寫一個[]byte數組與Golang到一個文件(代碼如下)。在我將它寫入文件後,我想用PHP打開文件並讀取字符串。但是,由於它的編碼,我需要使用unpack?我不確定要使用什麼格式。Golang []字節到PHP字符串

這裏是我的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個字節來標識文件,之後將寫入包含JSON長度的uint16,之後將寫入JSON,然後文件的其餘部分將繼續。這是一個修改後的音頻格式。 – cheese5505

+1

如果你不知道字節順序和那些東西,你爲什麼使用binary.Write?不要這樣做。 – Volker

回答

0

使用排序是:拇指

wbuf.Write(json)