Skip to content

2tvenom/cbor

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

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.

About

Golang library for working with cbor binary format

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages