我想將一個int16轉換爲一個字節數組,但我似乎無法得到它的工作。
這裏是我已經得到了現在:int16到字節數組
int16 i := 41
a := []byte(string(i))//this line is wrong
此外,如果有人想知道數組需要是2
我想將一個int16轉換爲一個字節數組,但我似乎無法得到它的工作。
這裏是我已經得到了現在:int16到字節數組
int16 i := 41
a := []byte(string(i))//this line is wrong
此外,如果有人想知道數組需要是2
雖然FUZxxl的答案的作品,你還可以使用編碼/二進制包:
var i int16 = 41
b := make([]byte, 2)
binary.LittleEndian.PutUint16(b, uint16(i))
編碼/二進制包有編碼小和大尾數爲所有固定大小的整數和一些易於使用的預建功能函數,如果您使用讀取器和寫入器而不是字節片。例如:
var i int16 = 41
err := binary.Write(w, binary.LittleEndian, i)
這不會比僅僅移動兩個字節來形成uint16慢嗎? – fuz
@fuz「簡單地移動...字節」正是這些功能所做的,所以編譯器可以選擇如果需要內聯該操作。從本質上講,你問的是,是否應該手動內聯小函數,而不是讓編譯器決定是否/何時這樣做。在大多數情況下,這個問題的答案是「不」。 – GrandOpener
你想要int16的單個字節嗎? – fuz