Golang library for working with cbor binary format
Go
Switch branches/tags
Nothing to show
Clone or download
2tvenom Merge pull request #4 from 1995parham/master
Adds cbor tagging support
Latest commit 384e799 Oct 16, 2017
Permalink
Failed to load latest commit information.
LICENSE Added readme, license Mar 16, 2014
README.md Update README.md Oct 16, 2017
cbor.go Adds base64 tag into struct encoding. Oct 16, 2017
cbor_test.go Uses go standard testing. Oct 16, 2017

README.md

CBOR encoder for Go

Decoder/encoder from Go data to CBOR binary string. This code has been developed and maintained by Ven at March 2014.

CBOR is an object representation format defined by the IETF. The specification has recently been approved as an IETF Standards-Track specification and has been published as RFC 7049.

Usage

package main

import (
	"fmt"
	"cbor"
	"bytes"
)
//custom struct
type Vector struct {
	X, Y, Z int
	Range []Range
	Label string
}

type Range struct {
	Length int
	Align float32
}

func main() {
	v := &Vector {
		X: 10,
		Y: 15,
		Z: 100,
		Range: []Range{
			Range {1,10},
			Range {223432423,30},
			Range {3,41.5},
			Range {174,55555.2},
		},
		Label: "HoHoHo",
	}

	//create encoder and marshal
	var buffTest bytes.Buffer
	encoder := cbor.NewEncoder(&buffTest)
	ok, error := encoder.Marshal(v)
	//check binary string
	if !ok {
		fmt.Errorf("Error decoding %s", error)
	} else {
		fmt.Printf("Variable Hex = % x\n", buffTest.Bytes())
		fmt.Printf("Variable = %v\n", buffTest.Bytes())
	}
	fmt.Printf("-----------------\n")

	//unmarshal binary string to new struct
	var vd Vector
	ok, err := encoder.Unmarshal(buffTest.Bytes(), &vd)

	if !ok {
		fmt.Printf("Error Unmarshal %s", err)
		return
	}
	//output
	fmt.Printf("%v", vd)
}

Compatibility

Checked with PHP extension in encode and decode

Known issues

  • Not support tags. 6 major type (in future)
  • Not support 16 floats encoding
  • Not decode nil (null) vars
  • Encode does't support indefinite-length values.