1バイトを2進数で 0b00000001 のように表示
fmt.Printf("%#08b\n", message) //2進数
fmt.Printf("%#X\n", message) //16進数
#で0bや0xを付ける。
08で最大8個0パディング。
bで2進数。Xで16進数
バイトの配列を定義
message := byte{ 0b11011100, 0b10011010, 0b10000000 } //2進数
message := byte{ 0xFF, 0x01, 0xAA } //16進数
バイトの文字列定義
message := byte("hello")
バイト配列の比較
a := byte{0xFF}
b := byte{0xAA}
if bytes.Compare(a, b)
バイトバッファでBigEndianで書き込み
var buf = new(bytes.Buffer)
label := byte{0xFF, 0xAA}
binary.Write(buf, binary.BigEndian, label)
バイト配列に追記
var ret byte
ret = append(ret, byte(len(str))) //1byte
ret = append(ret, byte(str)...) //n byte
byteをuint16に変換
data := byte{0xB0, 0x1B}
val := binary.BigEndian.Uint16(data)
byteをstringに変換
string(byte{0xe3, 0x81, 0x82})
stringをbyteに変換
str := "hello"
[]byte(str)
他の型に変換
a.Body.(*dnsmessage.NSResource) //a.BodyはResource型だがそれをNSResorceにして取得
intの数字と文字列の混在byte配列、null byte
const str2 string = "\x03www\x04jp0rs\x02co\x02jp\x00\x00\x01\x00\x01"
\x03がint 3、\x00がnull byte
ビット操作
var buf = new(bytes.Buffer)
var bin byte = 0
bin = h.QR << 7 先頭bitにシフトした1bitをあてる
bin |= byte(h.OpCode) << (7 - 4) //先頭から5bit目を操作(h.OpCodeが4bit)
bin |= h.AA << (7 - 5) //先頭から6bit目を操作
bin |= h.TC << (7 - 6)//先頭から7bit目を操作
bin |= h.RD << (7 - 7) //先頭から8bit目を操作