亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中跨字節編碼 20 位數字

在 Go 中跨字節編碼 20 位數字

Go
偶然的你 2022-05-18 14:05:14
我嘗試在 Go 中實現以下布局。目前我可以弄清楚如何從字節 0 編碼/設置位 6 和 7// Element ID flagbytesToSend[0] |= (1 << 7)//N/S Flag bytesToSend[0] |= (1 << 6)但是我不知道如何在 Go 中編碼 20 位的“塊號”。我確實認為閱讀它我會做...block_num_out := ((int(bytesToSend[0]) & 0x0f) << 16) | (int(bytesToSend[1]) << 8) | (int(bytesToSend[2]))我嘗試過的編碼...block_num_in := 343348bytesToSend[0] |= block_num_in << 16但這給出了一個錯誤......invalid operation: bytesToSend[0] |= block_num_in << 16 (mismatched types byte and int)我也試過block_num_in := 343348bytesToSend[0] |= (byte(block_num_in) << 16) & 0x0fbytesToSend[1] |= byte(block_num_in) << 8bytesToSend[2] |= byte(block_num_in)有任何想法嗎?謝謝!
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

書寫時,必須使用相反的移位方向。由于block_num_in是 type int,您必須將結果轉換為byte

bytesToSend[0] |= byte(block_num_in >> 16 & 0x0f)
bytesToSend[1] = byte(block_num_in >> 8 & 0xff)
bytesToSend[2] = byte(block_num_in)

此外,如果您必須做很多涉及步進字節邊界的位功夫,請考慮使用github.com/icza/bitio(披露:我是作者)。


查看完整回答
反對 回復 2022-05-18
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號