2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您想獲取 int16 的字節(jié),請(qǐng)嘗試以下操作:
var i int16 = 41
var h, l uint8 = uint8(i>>8), uint8(i&0xff)
Go 試圖讓編寫依賴于平臺(tái)屬性(例如字節(jié)順序)的程序變得困難。因此,禁止導(dǎo)致此類依賴關(guān)系的類型雙關(guān)(例如用 int16 覆蓋字節(jié)數(shù)組)。
如果您真的想用腳射擊自己,請(qǐng)嘗試不安全的包裹。

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
雖然 FUZxxl 的答案有效,但您也可以使用 encoding/binary 包:
var i int16 = 41
b := make([]byte, 2)
binary.LittleEndian.PutUint16(b, uint16(i))
encoding/binary 包具有預(yù)構(gòu)建的函數(shù),用于為所有固定大小的整數(shù)編碼小端和大端,以及一些易于使用的函數(shù),如果您使用的是讀取器和寫入器而不是字節(jié)切片。例子:
var i int16 = 41
err := binary.Write(w, binary.LittleEndian, i)
- 2 回答
- 0 關(guān)注
- 214 瀏覽
添加回答
舉報(bào)