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

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

如何將 [] 字節轉換為整數

如何將 [] 字節轉換為整數

Go
Helenr 2022-08-24 17:34:45
我試圖將一段字節轉換為整數,但它不起作用:https://play.golang.org/p/61Uhllz_qm7對于兩個完全不同的字節切片,當我使用此算法時,我得到相同的:uint64func idFromPacket(response []byte) uint64 {    fmt.Printf("The slice is [%v]\n", response)    var id uint64    reader := bytes.NewReader(response)    binary.Read(reader, binary.BigEndian, &id)    fmt.Printf("The id is [%d]\n", id)    return id}有人可以告訴我,為什么不同的輸入我得到相同的輸出?[]byteidFromPacket
查看完整描述

2 回答

?
心有法竹

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

有人可以告訴我,為什么不同的輸入我得到相同的輸出?[]byteidFromPacket

因為是 64 位(8 字節)長,而你傳遞的是 80 位(10 字節)。uint64

這比必要的寬度為 2 個字節。

然后讀取前 8 個字節,這些字節在兩個輸入中都為零,并在兩種情況下按預期返回您。binary.Read0


查看完整回答
反對 回復 2022-08-24
?
森林海

TA貢獻2011條經驗 獲得超2個贊

對于您的用例,您可以將函數替換為以下函數:


func idFromPacket(response []byte) uint64 {

    fmt.Printf("The slice is [%v]\n", response)

    var id uint64

    for _, v := range response {

        id <<= 8

        id |= uint64(v)

    }

    fmt.Printf("The id is [%v]\n", id)

    return id

}


查看完整回答
反對 回復 2022-08-24
  • 2 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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