我正在嘗試將長度為 8 的 bool 陣列轉換為一個位元組。有誰知道怎么做?
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToByte(mei)
uj5u.com熱心網友回復:
func ConvertToByte(bits [8]bool) byte {
var b byte
for _, bit := range bits {
b <<= 1
if bit {
b |= 1
}
}
return b
}
uj5u.com熱心網友回復:
遍歷位,隨時移動和設定。
以下是最高有效位位于陣列中索引 0 的情況的代碼:
func ConvertToUint8(mei [8]bool) uint8 {
var result uint8
for _, b := range mei {
result <<= 1
if b {
result |= 1
}
}
return result
}
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToUint8(mei)
fmt.Printf("%b\n", myvar) // prints 11110000
這是陣列中最低有效位位于索引 0 的情況的代碼:
func ConvertToUint8(mei [8]bool) uint8 {
var result uint8
for _, b := range mei {
result >>= 1
if b {
result |= 0b10000000
}
}
return result
}
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToUint8(mei)
fmt.Printf("b\n", myvar) // prints 00001111
uj5u.com熱心網友回復:
只是有點玩弄。遍歷陣列:
func boolsToByte( flags [8]bool ) (b byte) {
mask := byte(0x80)
for _, f := range flags {
if f {
b |= mask
}
mask >>= 1
}
return b
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/508327.html
標籤:去
上一篇:在WebWorker中的onmessage事件之前運行Go-WebAssembly
下一篇:如何動態獲取Go中的檔案長度?