enc

package
v2.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 19, 2020 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const MinAsciiCode = 255 - 192

Base192 could take the top 192 characters (leaving out the bottom 32, which are usually control characters). Base192 encoding could achieve near-raw efficiency, as it encodes 7.5 bits / byte. Or, in other words: every 15 bytes get encoded into 16 octets. This yields an appropriate 6.66% encoding loss.

Variables

This section is empty.

Functions

func Base32CharToInt

func Base32CharToInt(in byte) int

func ByteToBase32Char

func ByteToBase32Char(in byte) byte

func IntToBase32Char

func IntToBase32Char(in int) byte

IntToBase32Char will covert the given number into a letter from the Base32 alphabet. Or to put it in another term It will return the letter from the Base32 alphabet at a position given by the argument. If the number is larger than 31, it will "wrap over" and work on reminder of the parameter divided by 32.

Types

type Base128Encoder

type Base128Encoder struct {
}

Base128Encoder encodes 7 bytes to 8 characters

func (*Base128Encoder) Code

func (b *Base128Encoder) Code() byte

func (*Base128Encoder) Decode

func (b *Base128Encoder) Decode(data []byte) ([]byte, error)

func (*Base128Encoder) Encode

func (b *Base128Encoder) Encode(src []byte) []byte

func (*Base128Encoder) Name

func (b *Base128Encoder) Name() string

func (*Base128Encoder) Ratio

func (b *Base128Encoder) Ratio() float64

func (*Base128Encoder) String

func (b *Base128Encoder) String() string

func (*Base128Encoder) TestPatterns

func (b *Base128Encoder) TestPatterns() [][]byte

type Base192Encoder

type Base192Encoder struct {
}

Base128Encoder encodes 7.5 bits to 1 octet

func (*Base192Encoder) Code

func (b *Base192Encoder) Code() byte

func (*Base192Encoder) Decode

func (b *Base192Encoder) Decode(src []byte) ([]byte, error)

func (*Base192Encoder) Encode

func (b *Base192Encoder) Encode(src []byte) []byte

func (*Base192Encoder) Name

func (b *Base192Encoder) Name() string

func (*Base192Encoder) Ratio

func (b *Base192Encoder) Ratio() float64

func (*Base192Encoder) String

func (b *Base192Encoder) String() string

func (*Base192Encoder) TestPatterns

func (b *Base192Encoder) TestPatterns() [][]byte

type Base32Encoder

type Base32Encoder struct {
}

Base32Encoder encodes 5 bytes to 8 characters. Good because it's not case-sensitive.

func (*Base32Encoder) Code

func (b *Base32Encoder) Code() byte

func (*Base32Encoder) Decode

func (b *Base32Encoder) Decode(data []byte) ([]byte, error)

func (*Base32Encoder) Encode

func (b *Base32Encoder) Encode(data []byte) []byte

func (*Base32Encoder) Name

func (b *Base32Encoder) Name() string

func (*Base32Encoder) Ratio

func (b *Base32Encoder) Ratio() float64

func (*Base32Encoder) String

func (b *Base32Encoder) String() string

func (*Base32Encoder) TestPatterns

func (b *Base32Encoder) TestPatterns() [][]byte

type Base64Encoder

type Base64Encoder struct {
}

Base64Encoder encodes 3 bytes to 4 characters

func (*Base64Encoder) Code

func (b *Base64Encoder) Code() byte

func (*Base64Encoder) Decode

func (b *Base64Encoder) Decode(data []byte) ([]byte, error)

func (*Base64Encoder) Encode

func (b *Base64Encoder) Encode(data []byte) []byte

func (*Base64Encoder) Name

func (b *Base64Encoder) Name() string

func (*Base64Encoder) Ratio

func (b *Base64Encoder) Ratio() float64

func (*Base64Encoder) String

func (b *Base64Encoder) String() string

func (*Base64Encoder) TestPatterns

func (b *Base64Encoder) TestPatterns() [][]byte

type Base64uEncoder

type Base64uEncoder struct {
}

Base64uEncoder encodes 3 bytes to 4 characters and uses an alternative character map.

func (*Base64uEncoder) Code

func (b *Base64uEncoder) Code() byte

func (*Base64uEncoder) Decode

func (b *Base64uEncoder) Decode(data []byte) ([]byte, error)

func (*Base64uEncoder) Encode

func (b *Base64uEncoder) Encode(data []byte) []byte

func (*Base64uEncoder) Name

func (b *Base64uEncoder) Name() string

func (*Base64uEncoder) Ratio

func (b *Base64uEncoder) Ratio() float64

func (*Base64uEncoder) String

func (b *Base64uEncoder) String() string

func (*Base64uEncoder) TestPatterns

func (b *Base64uEncoder) TestPatterns() [][]byte

type Base85Encoder

type Base85Encoder struct {
}

func (*Base85Encoder) Code

func (b *Base85Encoder) Code() byte

func (*Base85Encoder) Decode

func (b *Base85Encoder) Decode(data []byte) ([]byte, error)

func (*Base85Encoder) Encode

func (b *Base85Encoder) Encode(data []byte) []byte

func (*Base85Encoder) Name

func (b *Base85Encoder) Name() string

func (*Base85Encoder) Ratio

func (b *Base85Encoder) Ratio() float64

func (*Base85Encoder) String

func (b *Base85Encoder) String() string

func (*Base85Encoder) TestPatterns

func (b *Base85Encoder) TestPatterns() [][]byte

type Base91Encoder

type Base91Encoder struct {
}

Base91Encoder when encoding, each group of 13 bits is converted into 2 radix-91 digits.

func (*Base91Encoder) Code

func (b *Base91Encoder) Code() byte

func (*Base91Encoder) Decode

func (b *Base91Encoder) Decode(data []byte) ([]byte, error)

func (*Base91Encoder) Encode

func (b *Base91Encoder) Encode(data []byte) []byte

func (*Base91Encoder) Name

func (b *Base91Encoder) Name() string

func (*Base91Encoder) Ratio

func (b *Base91Encoder) Ratio() float64

func (*Base91Encoder) String

func (b *Base91Encoder) String() string

func (*Base91Encoder) TestPatterns

func (b *Base91Encoder) TestPatterns() [][]byte

type Encoder

type Encoder interface {
	// Name is the user-friendly name of this encoder
	Name() string

	// Code represends the short (one-letter) code for the encoder
	Code() byte

	// Encode will take an array of bytes and encode it using this encoder
	Encode([]byte) []byte

	// Decode is the reverse proces of encoding
	Decode([]byte) ([]byte, error)

	// Return a list of test patterns for the specified encoding
	TestPatterns() [][]byte

	// Expansion ratio; e.g. the encoded array is this times longer than the original input
	Ratio() float64
}
var (
	Base32Encoding  Encoder = &Base32Encoder{}
	Base64Encoding  Encoder = &Base64Encoder{}
	Base64uEncoding Encoder = &Base64uEncoder{}
	Base85Encoding  Encoder = &Base85Encoder{}
	Base91Encoding  Encoder = &Base91Encoder{}
	Base128Encoding Encoder = &Base128Encoder{}
	Base192Encoding Encoder = &Base192Encoder{}
	RawEncoding     Encoder = &RawEncoder{}
)

Declare a list of encodings

func FromCode

func FromCode(code byte) (Encoder, error)

FromCode will return an encoder based on encoder code

type RawEncoder

type RawEncoder struct {
}

RawEncoder encodes 8 bytes to 8 characters -- it simply does not do any translation whatsoever

func (*RawEncoder) Code

func (b *RawEncoder) Code() byte

func (*RawEncoder) Decode

func (b *RawEncoder) Decode(data []byte) ([]byte, error)

func (*RawEncoder) Encode

func (b *RawEncoder) Encode(data []byte) []byte

func (*RawEncoder) Name

func (b *RawEncoder) Name() string

func (*RawEncoder) Ratio

func (b *RawEncoder) Ratio() float64

func (*RawEncoder) String

func (b *RawEncoder) String() string

func (*RawEncoder) TestPatterns

func (b *RawEncoder) TestPatterns() [][]byte

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL