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

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

Golang中的0x1是什么意思?

Golang中的0x1是什么意思?

Go
交互式愛情 2023-05-08 14:36:55
我試圖理解這段用于返回字節數組前綴為多少個零的代碼,但我不確定 0x1 是什么。谷歌搜索沒有幫助,但我假設0x1正在返回第一位?這些叫什么?另外,我知道這是一個單獨的問題,但我不認為它需要一個新線程:我不太明白為什么我們要在這里嵌套循環、位移和從 7 中減去 j。字節是這樣的嗎轉化為二進制?IdLength := 32func PrefixLen(count [IdLength]byte) int {    for i := 0; i < IdLength; i++ {        for j := 0; j < 8; j++ {            if (count[i]>>uint8(7-j))&0x1 != 0 {                return i*8 + j            }        }    }    return IdLength*8 - 1}
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

0x1只是 number 的十六進制表示法1。你&用一些整數0x1來獲得它的最低有效位(最右邊)。當使用位掩碼時,您寫0x1而不是因為從 16 進制轉換比從 10 進制轉換為 2 進制更容易。1

對于第二個問題,func PrefixLen做的是找到開頭連續零的個數count。外層循環每次處理一個字節,內層循環處理不同的位:當 j=0 時,它向右移動 7,從而從左邊移出第一個位,當 j=1 時,它移 6 位,得到第二個位,依此類推在。當遇到一位時,1它返回已檢查的位數。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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