在 C 編程中,當(dāng)我想通過(guò)網(wǎng)絡(luò)發(fā)送一個(gè)整數(shù)時(shí),我們需要使用 htonl() 或 htons() 在發(fā)送之前將整數(shù)從主機(jī)字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序。但是在golang中,我查過(guò)net包,并沒(méi)有找到類似htons/htonl這樣的功能。那么在使用 golang 時(shí)應(yīng)該如何發(fā)送整數(shù)呢?我需要自己實(shí)現(xiàn) htons/htonl 嗎?
2 回答

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
網(wǎng)絡(luò)字節(jié)順序只是大端,因此您可以使用encoding/binary包來(lái)執(zhí)行編碼。
例如:
data := make([]byte, 6)
binary.BigEndian.PutUint16(data, 0x1011)
binary.BigEndian.PutUint32(data[2:6], 0x12131415)
或者,如果您正在寫入io.Writer,則binary.Write()來(lái)自同一包的函數(shù)可能更方便(同樣,使用binary.BigEndian值作為order參數(shù))。

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
我想你以后是ByteOrder
在encoding/binary
。
ByteOrder 指定如何將字節(jié)序列轉(zhuǎn)換為 16 位、32 位或 64 位無(wú)符號(hào)整數(shù)。
- 2 回答
- 0 關(guān)注
- 885 瀏覽
添加回答
舉報(bào)
0/150
提交
取消