diff --git a/README.md b/README.md index ad78c49..971813d 100644 --- a/README.md +++ b/README.md @@ -22,32 +22,70 @@ func NewBase(off, til uint16, bit uint8) (bs Base, err error) ``` 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 -> ☱☴☲☳☱☰☶☳☱☵☰☳☲☴☶☶ diff --git a/define.go b/define.go index 6b00ed6..3cb5704 100644 --- a/define.go +++ b/define.go @@ -6,20 +6,38 @@ var ( 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) ) diff --git a/encode_test.go b/encode_test.go index 70dfb50..be09b72 100644 --- a/encode_test.go +++ b/encode_test.go @@ -44,6 +44,46 @@ func TestEncodeBase8192(t *testing.T) { } } +func TestEncodeBase4096(t *testing.T) { + assert.Equal(t, "㜐䐁", Base4096.EncodeString("1")) + assert.Equal(t, "㜓㘀䐂", Base4096.EncodeString("12")) + assert.Equal(t, "㜓㘳㐀䐃", Base4096.EncodeString("123")) + assert.Equal(t, "㜓㘳㝀䐄", Base4096.EncodeString("1234")) + assert.Equal(t, "㜓㘳㝃㤀䐅", Base4096.EncodeString("12345")) + assert.Equal(t, "㜓㘳㝃㤶", Base4096.EncodeString("123456")) + assert.Equal(t, "㜓㘳㝃㤶㝰䐁", Base4096.EncodeString("1234567")) + assert.Equal(t, "㜓㘳㝃㤶㝳㰀䐂", Base4096.EncodeString("12345678")) + assert.Equal(t, "㜓㘳㝃㤶㝳㰹㐀䐃", Base4096.EncodeString("123456789")) + assert.Equal(t, "㜓㘳㝃㤶㝳㰹㜀䐄", Base4096.EncodeString("1234567890")) + assert.Equal(t, "㜓㘳㝃㤶㝳㰹㜃㔀䐅", Base4096.EncodeString("12345678901")) + if !assert.Equal(t, "㜓㘳㝃㤶㝳㰹㜃㔲", Base4096.EncodeString("123456789012")) { + t.Fatal("123456789012") + } +} + +func TestEncodeBase512(t *testing.T) { + assert.Equal(t, "ᑢᘁ", Base512.EncodeString("1")) + assert.Equal(t, "ᑢᓈᘂ", Base512.EncodeString("12")) + assert.Equal(t, "ᑢᓈᖘᘃ", Base512.EncodeString("123")) + assert.Equal(t, "ᑢᓈᖙᕀᘄ", Base512.EncodeString("1234")) + assert.Equal(t, "ᑢᓈᖙᕃᒠᘅ", Base512.EncodeString("12345")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖀᘆ", Base512.EncodeString("123456")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖀᘇ", Base512.EncodeString("1234567")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜ᐀ᘈ", Base512.EncodeString("12345678")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹ", Base512.EncodeString("123456789")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹᑠᘁ", Base512.EncodeString("1234567890")) + assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹᑠᓄᘂ", Base512.EncodeString("12345678901")) + if !assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹᑠᓄᖐᘃ", Base512.EncodeString("123456789012")) { + t.Fatal("123456789012") + } + if !assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹᑠᓄᖑᔰᘄ", Base512.EncodeString("1234567890123")) { + t.Fatal("1234567890123") + } + if !assert.Equal(t, "ᑢᓈᖙᕃᒦᖍᖜᐹᑠᓄᖑᔳᒀᘅ", Base512.EncodeString("12345678901234")) { + t.Fatal("12345678901234") + } +} + func TestEncodeBase256(t *testing.T) { assert.Equal(t, "ᄱ", Base256.EncodeString("1")) assert.Equal(t, "ᄱᄲ", Base256.EncodeString("12")) @@ -67,6 +107,20 @@ func TestEncodeBase256(t *testing.T) { } } +func TestEncodeBaseTanWi(t *testing.T) { + assert.Equal(t, "㌱", BaseTanWi.EncodeString("1")) + assert.Equal(t, "㌱㌲", BaseTanWi.EncodeString("12")) + assert.Equal(t, "㌱㌲㌳", BaseTanWi.EncodeString("123")) + assert.Equal(t, "㌱㌲㌳㌴", BaseTanWi.EncodeString("1234")) + assert.Equal(t, "㌱㌲㌳㌴㌵", BaseTanWi.EncodeString("12345")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶", BaseTanWi.EncodeString("123456")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶㌷", BaseTanWi.EncodeString("1234567")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶㌷㌸", BaseTanWi.EncodeString("12345678")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶㌷㌸㌹", BaseTanWi.EncodeString("123456789")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶㌷㌸㌹㌰", BaseTanWi.EncodeString("1234567890")) + assert.Equal(t, "㌱㌲㌳㌴㌵㌶㌷㌸㌹㌰㌱", BaseTanWi.EncodeString("12345678901")) +} + func TestEncodeBase128(t *testing.T) { assert.Equal(t, "⑸⒠⓵", Base128.EncodeString("1")) assert.Equal(t, "⑸⒬⒠⓶", Base128.EncodeString("12")) @@ -90,6 +144,29 @@ func TestEncodeBase128(t *testing.T) { } } +func TestEncodeBaseDevanagari(t *testing.T) { + assert.Equal(t, "घी০", BaseDevanagari.EncodeString("1")) + assert.Equal(t, "घौी১", BaseDevanagari.EncodeString("12")) + assert.Equal(t, "घौॆर২", BaseDevanagari.EncodeString("123")) + assert.Equal(t, "घौॆळठ৩", BaseDevanagari.EncodeString("1234")) + assert.Equal(t, "घौॆळड॔৪", BaseDevanagari.EncodeString("12345")) + assert.Equal(t, "घौॆळड॔६৫", BaseDevanagari.EncodeString("123456")) + assert.Equal(t, "घौॆळड॔६ष", BaseDevanagari.EncodeString("1234567")) + assert.Equal(t, "घौॆळड॔६षजऀ০", BaseDevanagari.EncodeString("12345678")) + assert.Equal(t, "घौॆळड॔६षजऎठ১", BaseDevanagari.EncodeString("123456789")) + assert.Equal(t, "घौॆळड॔६षजऎदऀ২", BaseDevanagari.EncodeString("1234567890")) + assert.Equal(t, "घौॆळड॔६षजऎदःई৩", BaseDevanagari.EncodeString("12345678901")) + if !assert.Equal(t, "घौॆळड॔६षजऎदःउै৪", BaseDevanagari.EncodeString("123456789012")) { + t.Fatal("123456789012") + } + if !assert.Equal(t, "घौॆळड॔६षजऎदःउै०৫", BaseDevanagari.EncodeString("1234567890123")) { + t.Fatal("1234567890123") + } + if !assert.Equal(t, "घौॆळड॔६षजऎदःउै०ऴ", BaseDevanagari.EncodeString("12345678901234")) { + t.Fatal("12345678901234") + } +} + func TestEncodeBase64Gua(t *testing.T) { assert.Equal(t, "䷌䷐☰", Base64Gua.EncodeString("1")) assert.Equal(t, "䷌䷓䷈☱", Base64Gua.EncodeString("12")) @@ -113,6 +190,41 @@ func TestEncodeBase64Gua(t *testing.T) { } } +func TestEncodeBaseRune(t *testing.T) { + assert.Equal(t, "ᚬᚰᛡ", BaseRune.EncodeString("1")) + assert.Equal(t, "ᚬᚳᚨᛢ", BaseRune.EncodeString("12")) + assert.Equal(t, "ᚬᚳᚨᛓ", BaseRune.EncodeString("123")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚠᛡ", BaseRune.EncodeString("1234")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛢ", BaseRune.EncodeString("12345")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖ", BaseRune.EncodeString("123456")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛐᛡ", BaseRune.EncodeString("1234567")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛢ", BaseRune.EncodeString("12345678")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙ", BaseRune.EncodeString("123456789")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙᚬᚠᛡ", BaseRune.EncodeString("1234567890")) + assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙᚬᚣᚤᛢ", BaseRune.EncodeString("12345678901")) + if !assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙᚬᚣᚤᛒ", BaseRune.EncodeString("123456789012")) { + t.Fatal("123456789012") + } + if !assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙᚬᚣᚤᛒᚬᛐᛡ", BaseRune.EncodeString("1234567890123")) { + t.Fatal("1234567890123") + } + if !assert.Equal(t, "ᚬᚳᚨᛓᚭᚣᚴᛖᚭᛓᛀᛙᚬᚣᚤᛒᚬᛓᚰᛢ", BaseRune.EncodeString("12345678901234")) { + t.Fatal("12345678901234") + } +} + +func TestEncodeBaseMongolian(t *testing.T) { + assert.Equal(t, "ᠬᠰᡡ", BaseMongolian.EncodeString("1")) + assert.Equal(t, "ᠬᠳᠨᡢ", BaseMongolian.EncodeString("12")) + assert.Equal(t, "ᠬᠳᠨᡓ", BaseMongolian.EncodeString("123")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠠᡡ", BaseMongolian.EncodeString("1234")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠣᠴᡢ", BaseMongolian.EncodeString("12345")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠣᠴᡖ", BaseMongolian.EncodeString("123456")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠣᠴᡖᠭᡐᡡ", BaseMongolian.EncodeString("1234567")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠣᠴᡖᠭᡓᡀᡢ", BaseMongolian.EncodeString("12345678")) + assert.Equal(t, "ᠬᠳᠨᡓᠭᠣᠴᡖᠭᡓᡀᡙ", BaseMongolian.EncodeString("123456789")) +} + func TestEncodeBase32(t *testing.T) { assert.Equal(t, "▆▄■", Base32.EncodeString("1")) assert.Equal(t, "▆▄▙▀□", Base32.EncodeString("12")) @@ -125,6 +237,18 @@ func TestEncodeBase32(t *testing.T) { assert.Equal(t, "▆▄▙▃▆▍▁▕▆▘▛▓▐▎█▣", Base32.EncodeString("123456789")) } +func TestEncodeBaseTibetan(t *testing.T) { + assert.Equal(t, "ཏཌྷ༠", BaseTibetan.EncodeString("1")) + assert.Equal(t, "ཏཌྷརཉ༡", BaseTibetan.EncodeString("12")) + assert.Equal(t, "ཏཌྷརཌཏ༢", BaseTibetan.EncodeString("123")) + assert.Equal(t, "ཏཌྷརཌཏབཉ༣", BaseTibetan.EncodeString("1234")) + assert.Equal(t, "ཏཌྷརཌཏབཊཞ", BaseTibetan.EncodeString("12345")) + assert.Equal(t, "ཏཌྷརཌཏབཊཞཏཡ༠", BaseTibetan.EncodeString("123456")) + assert.Equal(t, "ཏཌྷརཌཏབཊཞཏཡཤཙ༡", BaseTibetan.EncodeString("1234567")) + assert.Equal(t, "ཏཌྷརཌཏབཊཞཏཡཤཛྷཙ༢", BaseTibetan.EncodeString("12345678")) + assert.Equal(t, "ཏཌྷརཌཏབཊཞཏཡཤཛྷཙབྷད༣", BaseTibetan.EncodeString("123456789")) +} + func TestEncodeBase16(t *testing.T) { assert.Equal(t, "㆓㆑", Base16.EncodeString("1")) assert.Equal(t, "㆓㆑㆓㆒", Base16.EncodeString("12")) @@ -137,6 +261,13 @@ func TestEncodeBase16(t *testing.T) { assert.Equal(t, "㆓㆑㆓㆒㆓㆓㆓㆔㆓㆕㆓㆖㆓㆗㆓㆘㆓㆙", Base16.EncodeString("123456789")) } +func TestEncodeBaseBuginese(t *testing.T) { + assert.Equal(t, "ᨃᨁ", BaseBuginese.EncodeString("1")) + assert.Equal(t, "ᨃᨁᨃᨂ", BaseBuginese.EncodeString("12")) + assert.Equal(t, "ᨃᨁᨃᨂᨃᨃ", BaseBuginese.EncodeString("123")) + assert.Equal(t, "ᨃᨁᨃᨂᨃᨃᨃᨄ", BaseBuginese.EncodeString("1234")) +} + func TestEncodeBase8Gua(t *testing.T) { assert.Equal(t, "☱☴☲⚊", Base8Gua.EncodeString("1")) assert.Equal(t, "☱☴☲☳☱☰⚋", Base8Gua.EncodeString("12"))