Golangでbit演算で10進数を16進数に変換する方法
Golangのhex.Encodeでは[]byte(uint8のスライス)の要素をビットシフトや0fとの論理積を使って16進数の文字列の[]byteに変換しています
なぜ、uint8をビットシフトや0fとの論理積で16進数に変換できるのでしょうか?
const hextable = "0123456789abcdef"
/* 中略 */
func Encode(dst, src []byte) int {
for i, v := range src {
dst[i*2] = hextable[v>>4]
dst[i*2+1] = hextable[v&0x0f]
}
return len(src) * 2
}