unibase2n

package module
v0.0.0-...-c98c9ec Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2023 License: GPL-3.0 Imports: 7 Imported by: 8

README

unibase2n

generate base2^n starting from any position in unicode table

Interface

// NewBase generates a new base2n config
func NewBase(off, til uint16, bit uint8) (bs Base, err error)
  • off is the starting offset in unicode table
  • til is the starting offset of the tail character, which could not cross with off area
  • bit is the number n of 2^n, for example bit 6 means 2^6=64, thus base64

Supported Base2n

see more in define.go

Base16384

see https://github.com/fumiama/base16384

1234567 -> 婌焳廔萷
Base8192
12345678 -> 눦듌옚뽣며찈
Base4096
123456 -> 㜓㘳㝃㤶
Base512
123456789 -> ᑢᓈᖙᕃᒦᖍᖜᐹ
Base256
12345678 -> ᄱᄲᄳᄴᄵᄶᄷᄸ
BaseTanWi
12345678 -> ㌱㌲㌳㌴㌵㌶㌷㌸
Base128
1234567 -> ⑸⒬⒦⒓⒁⒴Ⓦ⒗
BaseDevanagari
1234567 -> घौॆळड॔६ष
Base64Gua
123456 -> ䷌䷓䷈䷳䷍䷃䷔䷶
BaseRune
123456 -> ᚬᚳᚨᛓᚭᚣᚴᛖ
BaseMongolian
123456 -> ᠬᠳᠨᡓᠭᠣᠴᡖ
Base32
12345 -> ▆▄▙▃▆▍▁▕
BaseTibetan
12345 -> ཏཌྷརཌཏབཊཞ
Base16
1234 -> ㆓㆑㆓㆒㆓㆓㆓㆔
BaseBuginese
1234 -> ᨃᨁᨃᨂᨃᨃᨃᨄ
Base8Gua
123456 -> ☱☴☲☳☱☰☶☳☱☵☰☳☲☴☶☶

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidBitSize   = errors.New("bit size >= 16 or == 0")
	ErrZeroOffsetStart  = errors.New("zero offset start")
	ErrOffsetOverflow   = errors.New("offset overflow")
	ErrTailOverflow     = errors.New("tail overflow")
	ErrTailInCodingArea = errors.New("tail in coding area")
)
View Source
var (
	// Base16384 CJK Unified Ideographs
	//    see https://github.com/fumiama/base16384
	Base16384, _ = NewBase(0x4e00, 0x3d00, 14)
	// Base8192 谚文音節 Hangul Syllables
	Base8192, _ = NewBase(0xac00, 0xcc00, 13)
	// Base4096 CJK Unified Ideographs Extension A
	Base4096, _ = NewBase(0x3400, 0x4400, 12)
	// Base512 統一加拿大原住民音節文字 Unified Canadian Aboriginal Syllabics
	Base512, _ = NewBase(0x1400, 0x1600, 9)
	// Base256 谚文字母 Hangul Jamo
	Base256, _ = NewBase(0x1100, 0, 8)
	// BaseMath (256) 數學運算符 Mathematical Operators
	BaseMath, _ = NewBase(0x2200, 0, 8)
	// BaseTanWi 機種依存單位字符
	BaseTanWi, _ = NewBase(0x3300, 0, 8)
	// Base128 帶圈或括號的字母數字 Enclosed Alphanumerics
	Base128, _ = NewBase(0x2460, 0x24f4, 7)
	// BaseDevanagari 天城文 Devanagari
	BaseDevanagari, _ = NewBase(0x0900, 0x09e5, 7)
	// Base64 箭頭 Arrows
	Base64, _ = NewBase(0x2190, 0x21d0, 6)
	// Base64Gua 六十四卦 YiJing Hexagram Symbols
	Base64Gua, _ = NewBase(0x4dc0, 0x262f, 6)
	// BaseRune 盧恩字母 Runic
	BaseRune, _ = NewBase(0x16a0, 0x16e0, 6)
	// BaseMongolian 蒙古文 Mongolian
	BaseMongolian, _ = NewBase(0x1820, 0x1860, 6)
	// BaseBox 製表符 Box Drawing
	BaseBox, _ = NewBase(0x2500, 0x25f0, 7)
	// Base32 方塊元素 Block Elements
	Base32, _ = NewBase(0x2580, 0x259f, 5)
	// BaseTibetan 藏文 Tibetan
	BaseTibetan, _ = NewBase(0x0f49, 0x0f1f, 5)
	// Base16 漢文訓讀點 Kanbun Kundoku Den
	Base16, _ = NewBase(0x3190, 0, 4)
	// BaseBuginese 布吉文 Buginese
	BaseBuginese, _ = NewBase(0x1a00, 0, 4)
	// Base8Gua 八卦 YiJing Hexagram Symbols
	Base8Gua, _ = NewBase(0x2630, 0x2689, 3)
)
View Source
var (
	ErrInvalidPack = errors.New("invalid pack")
)

Functions

func BytesToString

func BytesToString(b []byte) string

BytesToString 没有内存开销的转换

func StringToBytes

func StringToBytes(s string) (b []byte)

StringToBytes 没有内存开销的转换

func UTF16BE2UTF8

func UTF16BE2UTF8(b []byte) ([]byte, error)

UTF16BE2UTF8 to display the result as string

func UTF82UTF16BE

func UTF82UTF16BE(b []byte) ([]byte, error)

UTF82UTF16BE to decode from string

Types

type Base

type Base struct {
	// contains filtered or unexported fields
}

Base has an encoding buffer thus should not be copied.

total size: 8 bytes

func New

func New(pack Pack) (bs Base, err error)

New base2n from a packed config

func NewBase

func NewBase(off, til uint16, bit uint8) (bs Base, err error)

NewBase generates a new base2n config

func (Base) Decode

func (bs Base) Decode(data []byte) (out []byte)

func (Base) DecodeFromString

func (bs Base) DecodeFromString(s string) []byte

func (Base) DecodeLen

func (bs Base) DecodeLen(in, offset int) (out int)

DecodeLen calculate decode length

offset must be legal or out will <= 0

func (Base) DecodeString

func (bs Base) DecodeString(s string) string

func (Base) DecodeTo

func (bs Base) DecodeTo(data, out []byte)

func (Base) DecodeToString

func (bs Base) DecodeToString(d []byte) string

func (Base) Encode

func (bs Base) Encode(data []byte) (out []byte)

Encode data to base2n

func (Base) EncodeFromString

func (bs Base) EncodeFromString(s string) []byte

func (Base) EncodeLen

func (bs Base) EncodeLen(in int) (out, offset int)

EncodeLen calculate encode length

offset will be appended as til+offset at last

func (Base) EncodeString

func (bs Base) EncodeString(s string) string

func (Base) EncodeTo

func (bs Base) EncodeTo(data, out []byte)

EncodeTo data to base2n

func (Base) EncodeToString

func (bs Base) EncodeToString(b []byte) string

func (Base) Pack

func (bs Base) Pack() Pack

Pack this config into an integer

type Pack

type Pack uint64

Jump to

Keyboard shortcuts

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