Bitcoin binary encoding library

Golang implementation of bitcoin’s variable integer and variable string binary encodings

VarInt

Encoding

buf := make([]byte, 5)
written := bitcoinbinary.PutUvarint(buf, uint64(1344)) //[]byte{0xFD, 0x40, 0x05, 0x00, 0x00} in buf, 3 in written

Decoding

buf := []byte{0xFD, 0x40, 0x05, 0x00, 0x00}
i, read := bitcoinbinary.Uvarint(buf) //1344 in i, 3 in read

VarStr

Encoding

buf := make([]byte, 15)
written := bitcoinbinary.PutVarstr(buf, []byte("Hello World!")) //[]byte{0x0C, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x00, 0x00} in buf, 13 in written

Decoding

buf := []byte{0x0C, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x21, 0x00, 0x00}
b, read := bitcoinbinary.Varstr(buf) //13 in read
str := string(b)                     //"Hello world!" in str

GitHub

View Github