Base64ならぬ、Base16384


Base64というものがあるが、今はほとんどの環境で色々な種類の文字が使えるし、使う文字をもっと増やせるはずだ。実際そういった考えで作られたBase◯◯というのはいくつかあるが、Base16384はググっても出てこなかったので、ここに記しておく。

なぜ16384なのか

UnicodeにはU+0000U+10FFFFの文字があるが、サロゲートペアが面倒くさいので、U+0000U+FFFFのみについて考えたい。文字を選ぶ基準としては、

  • 空白や制御文字、文字が当てられていないものなどは避けたい。
  • できれば連番の方が処理が楽だし、見た目もそろっていたほうがいい。
  • 64文字からたかが2倍3倍になっただけでは、増えたように思えてもビットで考えるとあまり増えていないので、数は多い方がいい。

つまりめちゃくちゃ文字の種類が多い文字体系があればいいのだが、そんなのないよありえない……

……それがありえるかも。普段使っている、漢字である。これならある程度ひとまとまりになっているのでは?ということで調べたところ、U+4E00U+9FFFに、CJK統合漢字という文字集合があった。他にも漢字の集合はいくつかあるが、これが一番でかいし、すべてひと続きに埋まっていてかなり理想的である。だいたい2万文字あるので、そのうちの16384($2^{14}$)文字、U+4E00「一」~U+8DFF「跿」を使うことにした。

試してみる

実装は14バイトずつ切り取ったものに4E00を足していくだけなので各自に任せるとして、どんな感じ(漢字)になるかだけ紹介する。

画像

Base64

iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAABHNCSVQICAgIfAhkiAAABRZJREFUaIHtl2tsVEUUgL+5r93t3pYWSnm1RSyYlNIAihp5iAUlEdAERBOQYJrgLyRqQDEGY9CEiDFB4wsSFAHlIQESCCYC0hA0QogJgmIRxFKpvCFd7r7vnfHHLqVlt4iiq5D9/s3O5My3c86dc6+Yut1W3HzEtf/a4O+SF881efFckxfPNXnxXJMXzzV58Vxzq4srpAqjSPy7Nn+Ba4pL5eC4DiE3TFfrTnxaDy4mHaKeg0JmrHeVQ1I6bWNPOSTajf9JjM4m4tKh1KrltbtWMaBrLafDLfh0P0W+EhqaN/H2T09g66AJu026tst0Sv3l7Dz1BpqAfsHxVBePZMuJl7E0G6miRDwP27BvWDzriSekw9CSGSx94ADbmlcx7gudmbsrebKhjMe2mQgh2PBQBAlt5ZOQMK5iBlP6zyYmIalgZI/HmV79AlEPpIpSYtXy7vBGHPfGsyCu/nSTKoJP78WKMSd4amc5l9wW/NqVE1K4tCZjTK54lUdvn8mMXRV0NVPzIdchLqG7lRpHPIdWF3r5bKSKUGLVMnfwZ9R/PYiidK6DOujCRuER9aIk29kENHAVFOgZGcr8dItJyTPVK1l1aBGhZEdpAIFBsWnzefMCEl6c0d3rcZWDqxxGdKtnZtU7xKWDVA79gw/yUs1qYuk6T6ooVcU1rB39K8tGHmfF6FMMLJqKqxwcN8qcmi2sHxtidd1Z1oy5wIjS2cwf3EDEy8xQRo0nJAwuG87rB8YS1AOdZYoiA7Y2LWdMn2nsPb8cU0CRVUrPgr5IBUqA3yii3K7CU4AAQ/hpam3kuT3V2EYJAg1PRXFcWF13hq+a1zNpRxE6oAuYU7OJIWXDSUgo0Dvu38mtokhKEOjZp9OBmy59T/dA75QYoJTqeNsohVQdbx+FwlXgqSiuChOTEWb2X8K+0w0s+2UW3cwgxaaNbQRYcGASTjKEEJn7Z71VdM1ok+kMBRSa3Ym6DlqWwJ0hEAhSJQepDA/v/TAv7rmbYtMERHqdToFOenUmGSeuCzgdbmFYySO4qvOnPy7hvh4T+eH8HozrFE9JdDwRBRQYNucSZxBY1xcom7hfg7U/v8Xzg5dwNkGnjaZA91NXOZl1x5/F0vzXuZ3g6kQaAppDRxhROoOkDHeYkypVWtclbmo2O06/T4tzjPfu3cv5RISIl+qAcekQch2C+m2sHNPKwn31aFxJ+7XQRIDfY/vpY/cjJiEmUx3Yr8FHh+cxZ+gHxCRte4U9h56+SgJGEJXFPeuOxabNvO9GMXfgWr4c77Hz+EaOhQ5i6X6GlI6mpnQYjRf2M6Hv0+w+9wlW+u/rmo4hzHayOqZ2Of0CQ8Caw4vZMPY8m499TGXhHXzYOIWm8C6WHpzPpnFxth1fR4tzlAHFQ6koHEDCi2et8owG1J6I52AbXZnQ5xUqCgfgyiSHLnzL1pNvEvVg8T3fcOTiftY0zcLSLLqY1RQaZfwW2Y4QfgJab3oFBnHU2YwurjSlqmAd9/ecxtnYCXacXIAmgsRlGEPAxPJFlAXKaQr9yMaWhYzqNp0DrZ9iiA79JH5NcQBFnIRM4qnU824IMLUgIIh4DqYGZjqoIoFSibb3F4WLVLE26ct4ysFNx7PSsVLrkyRlHAnopPZxVfhqaYD4nxanwIdP82Wdu7oVCyyEsNqNjQxpSLV4PUv+BSaWZnb4LYs0cOt/SPz/yIvnmrx4rsmL55q8eK7Ji+eavHiuuWnF/wBB6P7Ki4LVwQAAAABJRU5ErkJggg==

Base16384

灔勤樴堚傀一丵坈弔渀一簀一僠渘一丕覒竜一丁唴圥戈倂亇縡犈一乑朥剁挚嘞葝祬挑彈僾螯蕻毩晙塹筑惉灓怀炆疘渔猑舁剁屁溚蘋聆眀缆更噈滅俣僄潀喔漁劂偠奈帴庢亘垈忄抪槂卷精觧洜檺獥篢堪籃课腳籌胝臎畜裹烫歖蔟婋旿棠觤潼諕蟱攤罼諕蟱攤罼諕蟱攜袸窮爊盒巋站趁棢犾斂蘎噍苅涭屼撃胢晶炞滐瑪翞捃抎瓖嬼蜤蒣淴琳尦蚴砝悫玵糕焚侬箧绋涇廽厾劆瞣淇葏懘岺並襍粭窷弫该褏嵐桪乾繼捁氽狋灥褓幮瞢式份糁絘崺蚒沓凐犆惇薀仛璕脞蘮殙糊薛墆嫇箦庂啣繐伂擞摎帰禘湥巫崦垈梖侒巇瑗緐坄嶤炔琭旋糰徇嵼棌溮趝圲砉巯罢焒毡硧履证槳梕勔禋庙煌禞坔殾淉焗彗廕懳噵耒袆覕咑臈歘敺豛塈睁烕媝贆浑贽瀨畊蠌裨纑簑嗖瀤蓶幃忀挔蠆徜秱芋恲愽抭杵栄栖弝眀湐椖痍蟳亄珩腇毫橥昺穱呴磙葭拯劥滕仯萌已抳撦妤衏碊卜拖稝赊誴晹病蠔绂聪墫唇兼硲栭礇羶埗歙莣妜倣惙脇评儓姌我盒檐娮哳粰洘惔仧摘皈冶宋摴聽矬嵯翅嬂录悳蘫蜠半渷肊奲糂拠丄巡睪楹妓蕗晆偀滔謕罜搗數梾棗嫚扱勪渋琔褸犅珃恒傍仯糟聫栤漨廨葩謸呬籽懽舎豐暠猺疍窢協啛翸攉揠硊壠癎愑枽珼壻愍夾葑楷娠罩盖舑晰昄狣堐庙賙觕揓孨狺廀扒棝灮滥硛亝噄亅嚔喩儃賿苀緮籦萭娑剺畓瘔蟩茦呉裠章歮晖媒峢磳矏胮哸氓豸淁蠳礔懒敃繄匔名籱垜幘菅肉糡涃筏觼旎冗樍爚氶瑀诔荳瑥菇痱欯腞螝蘺牁瘊桃忆匓砎爌毦圲睕棗坛璣曭岿懢蔸臟糝胾扈怢旪渜沑俈殂貛棁腏壂浽撅缧覵舑嘍讏觩曽耲暄瑓啶壼匞嗧婙貀洐牭泡懘決豊云漉攔诫熱桬蓳絆婝谅磸櫯穼趄栺匎暺旨桒岦瞝侈艟萳登謾绻蔉掾糾籪尡脝礣碙萹赀爼偫冋葌嵣聮嵽愙民菳昸潩紂衘沜臩甗哘歟忢蔹帇千硊俄儊奧祼盀楒沈蟘侵葧廧半溠涃堤濋痌絚慯劽搏勷浰蜸痭曓寂芋妩煔戚板佭琸幾亖瓷瘔呱茶曂袸芥碘俟淞櫆葶亗桱檀垠穆扡净缼牙帗塩傿檌桚厌袍矐岶浢瀃緒忹孱丑柈弳炩茼蓠滂茠嘢喀袘呦岪倨半垶诅虘筒缶衲薌礅寇竴礕妮愤杇亞炓葱捾咦球蚟厩計欿腥畮覡戬窄稶盘舱睈筞凔緸匦玙畯溶头樺藴燳跈烹螫翢糉烹螫翢糉烹螫翢粹桱淰伇盾肢蘭攄一一劔挹劮庘嘠

幅があるのでぱっと見はあまり変わっていないが、文字数はBase64の3/7になる。