diff --git a/CMakeLists.txt b/CMakeLists.txt index 39ae6a5..3f0d840 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,5 @@ cmake_minimum_required(VERSION 3.0.0) -project(base16384 VERSION 2.2.0) -SET(CMAKE_BUILD_TYPE "Release") +project(base16384 VERSION 2.2.2) add_executable(base16384_b base16384.c) @@ -18,14 +17,6 @@ ELSE() add_library(base16384_s STATIC file.c base1432.c) ENDIF() -if (MSVC) - # do nothing -else() - # add hardening - target_compile_options(base16384 PUBLIC -Wl,-z,now -Wdate-time) - add_definitions(-D_FORTIFY_SOURCE=2) -endif() - set_target_properties(base16384_b PROPERTIES OUTPUT_NAME base16384) set_target_properties(base16384_s PROPERTIES OUTPUT_NAME base16384) set_target_properties(base16384 PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}) diff --git a/README.md b/README.md index a518a61..5a1d4db 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,17 @@ Save more space and since the code 0x0000 is encoded to "一", finding zero spac ## Usage 使用说明 -### Install from Debian sid 从Debian sid安装 +### Install from Debian Bookworm or higher 从 Debian Bookworm 或更高版本安装 ```bash -sudo apt install base16384/unstable +sudo apt install base16384 ``` -### Install from my PPA in Ubuntu 从我的PPA安装 +### Install from Homebrew 从 Homebrew 安装 +```bash +brew install base16384 +``` + +### Install from my PPA in Ubuntu 乌班图下从我的 PPA 安装 ```bash sudo add-apt-repository ppa:fumiama/ppa sudo apt-get update @@ -51,9 +56,9 @@ Then use `cmake` to build. ```bash mkdir build cd build -cmake .. -make -make install +cmake -DCMAKE_BUILD_TYPE:STRING=Release -G Ninja .. +cmake --build . --config Release --target all -- +cmake --install . ``` Now you can encode/decode a file by commands below. @@ -61,16 +66,34 @@ Now you can encode/decode a file by commands below. 现在可以使用命令对文件进行编码/解码。 ```kotlin -Usage: -[e|d] - -e encode - -d decode - pass - to read from stdin - pass - to write to stdout +Usage: +base16384 [-edt] [inputfile] [outputfile] + -e encode + -d decode + -t show spend time + inputfile pass - to read from stdin + outputfile pass - to write to stdout ``` ## Examples 用例 -The text below is the encoding of the base16384.exe itself(MacOS Mojave version). It is clear to see the strucutre of the binary file. +1. Encode simple text 简单文本编码 -下面的文本是使用base16384程序编码自身(MacOS Mojave版本)的结果。可见文件结构十分清晰。 +```bash +echo -n "1234567" | base16384 -e - - | iconv -f utf-16be -t utf-8 +婌焳廔萷 +``` -臾糟蘜一乀縀倀倀一仰一亰佀丈戀渀一一乤一丒一丁浟成扴捩卒懀一一一一一一一一一一伀一一一一一一一一一一一一一一一一一一一丙一丂済一旗荄捡戀一一一一一一一丁一一亀一一一一一一一一丠一一一丅一一戀一侀一一一丗菷徕虴一一一一一丅譽扅搕一一一一一七渍一丐一仼冀一一一蘃帀丐一一一一一一一市一一一一一一一佽浳欝搧娀一一一一也旕剕潐一一一一一丷俀一伀一吀一一一不繰一乀一一一一一一嘄丠一一丆一一一一旗蔷忕灟栙擇侕耀一叵譑単挀一一一一一仰欀一帀丂縀一一一丼啀一嘀一一一一一一乀倀一一一一一一丅譽煳欜璖螜一一一丁浟挑掅帀一一一一一複帀丄一丌帐一一一峁舀一一一一一一一丈一一一一一一一一也旘蓶蟍舀一一一一丗菵引晔一一一一一丂乼一乀一俠一一一一渟一乐一一一一一一一一一一一一一一一叵试籷桛瑅讥籦槀一佽浔彖區一一一一一亘嗀一刀一栀一一一並俰一倀一一一一一一一一一一一一一一一最一嚀刀也旑刕弄一一一一一一倀一伀一丁亀一一一亀一一一一帀一一一儀一丰一丄一一一一旗蓦罽腹楘瓶罽繴檀叵謑佔幀一一一一一一渀一帀一嘀一一一一嘀一娀一一一一一丁渀一帀一一一一一丅譽畯欀一一一一一丁浟弐捄刀一一一一一倈一丄一丆一一一一亂一七一一一一一一丘一丄帀一一一一一也旛吕词蝭暛蓅证色丗菴弅扁一一一一一丂亀一乀一倀一一一一渠一丰一一一一一一俀一乐一一一一一一叵讍絭楛蓠一一一一佽浄幕刐一一一一一亠嘀一刀一儀倀一一一一一刀一一一一一一刀一一一一一一一一最一劀一也旓劔蜭卄恕一一一一儂一伀一丁一一一一什一一一僀匀一一一伀一丐一一一一一一嚀丈什一一儀一嘀一亃一丰一一一一一一仠縀为一一渱一娀一丂一丁渀一同渀乸一丢兀一瘁一亰一乐一一一一一一一一丂縀一夀一估一一一一一一一一一一一一一一一嶃娀两一一一一一一一一一一一尀一倀一丌一丂试腲姛咖嚽特椙一一一一侰一丘一与碹仔沖煑桒礅敽蒎籬耀一倀一丁一一丸堀七溠丄一一縀一一劀炠一丐一一一一一一亠一渆一丁縔一一一一一一一一儀一仠一丆一一倀一丟禐刀一市试腲姛咖嚽穩暔薗寑獭妐烦忥穩暀一一一垀一乀一丸儐一帀一傐一丐一丏仄一堀一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一丅挢埥怘諴澧侓園朤焇瘠买暜焇瘟繾帠唆嬄腀一一矁煃仸崇趃豁敱嬢嬕壀一伡焌炒丝嗿澃老瘼両毃滰予崀噝绠誀怏丈数蘼个净倗樶桃糿跿误跿跞跿跾槿跿螿跿跛跿跃翴丁捈灹曔槾凸佝耤瀴嬹一丄澌劁怀檏趂凇貺绘崟蛫倠詿膬冃翽皟焇蘟繺俐嗢埁繾常嶃蘩耣幀栏丁数葩八跿跴巿跿廿跿譟跿跕跿跽跿跿枋滱谐一一丆桁捈灹戕欅摁捐捅嬢俬琀一伦執恢淆栌购凡檀一么烁廑刀乌烊剓嗙瑁滏胐谗瀀一劈稗謐一勈竡宅跃虎瘀一慡浠谓笀一劘嗸伀刀仸薀一专嚞櫇萱縺嬐舀亅縃蛮訄一婿苈痚蠁一下爈一丐暜伔翉蠨绐丁嚃谿绸慜伀丒暜弥燆怚樉媑垒怰沂伐俰灰樞牿俸亀檈艳匀一丂畡侍企瘼凾凸佃虱訄一怣廛刄一怘繈匠俈跸嘼稛眇乀丄瀶荈跿跴耧痨权帀倗丏潖帐丁媋歪勘旘嶈愀帀伔翭析昳誴嶄喿跿謢嬵元渀伲埿蠼廀丁垉翓晟訾化跿跴瀴诵兀与瑨一专晞菔楈煍淠舀乌灹貌戰一恢橔瀗丏漆縐丂跾一丄耧賨窃一僿贀一勈痻皥儀丄耴荚刄丄瀴歃刀一詼亾乀一僫諿净勈痝媉衺噐縀么潰仸恰一专嚟氧呈灶禓漤怀蠈乐丁噣訮渐一么灷苈痧癝儀丄瀗乵簒囓萰嬀为呀縀仫朠訰熬嚃胁岰小儊滰羋跸一专嚟覠漌一姿言一愢淮湐娀专囒蓤崀专嚞欒埶愢沨畧皹伀丄澏纺乀一伲埯愢涞燘夀丒噜俒杌灹苈痛盲僀丄瀇劘一丅笅橁敐揤卽毃怣懛爰一衝跿跽嚍嵃绐七睫跿跴瀴講兀与獿跿跒囓蔬娀为挿跿赟跿践燻跿搿緿譫跿跖緿跽狿跿葢蘼涄一一丁璐捒嚞挅敁掐捔卑慈湻垀一么灼芘痱璃巋廸斌一丒嚰捴尀专嚲演翿枠膲舾叽一丄瀬华冀丄耬繍潽滸帔伀专晟訾刈乀丄琇贁丄一谷褀一勈疜翶婰岂嘬一潰仸蘜倀丌淴耧貺乀一僤倀一刘甁匱聺嵀瘀么滾巰谓稁一劈甍劉豰涑贇眝开涘産俸仠谟溧侃繄愜倀觾凥娄瀴詃怀樄性谩羓囒捴尐专嚞妡猈一劆巂蠁一丄耧界灼沉嘨一怡樀谑漁一劈畽媉趺嚠瘀仩敀帀伢宵怿跿謲埧蠦溠丂叀凡掀刀乌烟梄萗贏瀒縐丁匱襙瘳窴嶄仿跿謢嬵廂縀伢域蠉纠丁垉羓晟显叻趿跴瀴謫僀与爀伀专晞菔楈煍慀稀乌灹貏稤一恢橔瀗丏漄渐丁媉觺尐爀乌灻臟蘀一歁貍嘤一裁沀舨一愣懗縴一愣恘戴帀凇艀丂谁一下瘀丐专嚟謲埩蠭庐丁嚉绡殰谒戀一勈疿皐偀丈巠譵廓嚞趢儉一噜俑佈灶抌善湈粀一一伀一劀啅噣苐橠幜讍擀犌嗤湁瀁仾穡琮凇虀一一七翴丂埇愢泮瀰圀专嚟谧汌灸禑刀尀蠁买丁噣訮渐一乌灹苈症瘱偀丄瀗丏潖巿跽嚍嵗亠七瘴偀丄瀇劘一丅笅橁敐揤卽毃怣懞訤一裸劈苵嘊一岽欢嬽揂渀冯屈煏庠瘀仫罙滱謐一捒嚞挢凬划囗旂贆一与炘嘀丒妍竒蓗溷澴嬣蕭谒咔藃瘃一劈畁囁蠏芌嗨恈煁两渇噈滱伅蔍琮凇虀一一丙眅挢埥幕舕杍嚃褆嘿訐嶅蓀一伢埳怣敝烼吀一岄戠一愢藝漲奵蘒嚴娠嶾帀昿澐嶄猀一倏虥歃抈篬幈烜美渻裿跒嚴婡璃尋敆笢孵萯繠一仨亂一伢奍萓傟猢蛛嬭筸奸楃怽蓞伢埐怰沃謣俺劒囓縉嚺坲芒濴濤紓嚟伣藪怢欄焇瘿怰涡圠係怀歴澧翨什丄渇豈煏殠爀丱縺屰樀丱縒嘼幡楁斐揵蔍嚋泄劈篌曨姿巿謢奃吙瘳溴嶅楿跿趯摈煏彐爀仨篁縀伢嬽娂帀冢礇一劈苴紉一岉訜一怣懒蘤一蠤繰丁嚍嵒源七皇俀七嗿瘾俀三偂庐爤圉偂庐爒暝嬡燆愚欉媑垒恰沢伄俲弢欌喠流繾渤切偆煁子一一彊樤場刖滰巸巠卷垒囐蒴刀丒吰怅嘁耿谄吏嘆裄刘崀囫傐昼渓礄幠言睕嚉蝐捴卙佔拐帟堏哹凢什刀乌曽犘茸佈滾幫蘜一丐榐樀一愃苼猦凁跒妹媑垒園朢弲埈怽谴犧彉艺抐啅埁血犘崄佉滾幇圭嚃豁犀謿罈滱練瀧繈诸节留囑覒丝朣修互囐懔一一劂痁嘁谒嘼両娹萃虫瘄一恣幏嬢净倒冟渾咩乀七啈翀恮帀一一丿致瓼一一巳言义紀勠伸乎专瑠詾刀一一传崸訍佴瀧腈繺縤纇奈灼抌喤剌噾技略嚉諒娞稚俣一巳謠埋繻溈喛贿一劀畹威螒廳燄苃怠言匢凂俓冟基翫伌樃啉厅芃虁刄一凭滁欢城怰泠圢凡仒娞刹嘉詐昿瘄嶄芀一传嶾攅縔瀧汈繹湨喘丿一劀甹嚃蛀芌喌扈灶技病侃貀滸悐一丒任蝰攂怢毤焇琌湹渀丼么偳犈嶌嵈繸翄瀧杈偼战巨兴沒任蝰攃怢毤焇琔湹渀一嵈偳犈嶌嵈繸耤瀧杈偼战巨剴戒任蝰攄怢毤瀇瓀一丄焇琚怂櫤瀏焿怰氲眢埙怂洔吏蠅欉技賹戗佒嚝朢俦縀一伣俦嚒亜蜢凢巒娞囁嘉誒嚝匢衎专渄蘁尀怀檤琤拃恘訄唙刃趏托潐凿弢樅笅橁斐揵蔗虷结嚜漢几贒囕凱嚉艒娞爉嚃繀暜簏焁怡欠谓蠁一妠刀一怊檤渇案滰緼旵紅濁渀仇蓅赛给舘一缸痕牖舆一婎埵朝竁渀儓災摉椠昀仄蚟排蓄吀丱尧荤莰侀丌徉譙八繠七剢浖幚蘘一枋滱谐一一一詽一缸涖觿勢浖淼攗拸缐惗楋剢祤心舀一丱吢戃忄繉攽嘋匥蓶穌創臒伱忝綏剁坺诌愄歳芁穑蕯狄繋攽嘣匭蓵橄剷秒缐恞絋匭茵穆嚴仑缐旧詓臄繑歏甑伭殴穆墶弜嵀一七勢址嶜撵臗亱惝絋厥櫵繌抗槛缐惞絏厥櫵繬抗槜罱攽樣叅蓿橚斯跅祺跼攗拾缸牐凧勁涟藏媁嚃羂婌号拀怠訠嘾匫跿跴瀴担一一伢叛凡坐一仄虾擬贓災摲機敓仅譝窜憋莑匁帀一仅赛織昔一缸瓐儣叭櫴帬憉譙啔繐七叭蓴詞描弄缸痕犕圅一婞敯櫅襺謼斕臑侱尧荤猻佀丌斗槜罽攽刣勢浖恓刔一罽殼脗珫聱泞紧勢浖归帔一罽歌礓灵丰婌叹贄諒傜圤蟁凡戯臿跩籿巿贗譯佧乀一翶怣彌戀一丒噝稾匿跿跾絈崟业嶿跽櫻跿菏緿赢賿跶姯跿榾跿讘簏嗡一一一枤劆崙匱縠嗀淸譵嵑任蜐嗿幣戏谏蘅毋犈舷漁一劆娒佈乲巾倏哺裆昼槣礔滱緄哠伀一岰琏哶幮习一乕怢汔卝佖幕戕彎埰繾俼喠欁訢樜嗤冃蘾傜漊嬌丠訟琗圏瀢渀丁婣聑愞弦蠀耿穿褟資恮縀一一丿巴瓸一一巏言义緀丌凼崀一剓喴崟开丄瘼蛰唻芘苒案灼拂啥嚉諓借嬢嬌瑒嚟嬣俣伓借笠埋怰池标琀跏縄渧汊凎崓庉垃罀折崐啍屳嗫猐俀彡樇扟矴一丄拇筅婹剀唁厅縃虎嘀一悢臎谵嶲繺廨嶄再儮昜唣賿跐皀纉侃谀廸惸一丒囘賋趱跢櫬喸咁螿一丂埋繺罈嶌儉諐皅纈佁滾丠谒愀一嚜複簌湹紀一仁衇亟匊噌嚀爘巠兴氒妻姾翿穿跿謠俻灷稞虒俦言一伢埙怰沒堏漏偼戨漰瀃幠趀忑坈灶抌喤梁虰一丁囁裊瘾嫼埋庢参嘑侃谁敂漢螲跬添嗾翿怀櫴瀧蝈繺怨喇一一劌喼纃蟏纜謊噼嚁掴危佝幗爕護冐媿緿誣賿跊巯跼篾跿胟觿贽趿跿誔调一已挀儀丿联嘌一跉所娀仿坑渰七败怀縀凼獊什丏誕娃一已挸儀丿聕丌一跉挠娀仿坕丰七败掀縀凼獘什丏誕栃一已捰儀专囑蓴倀丐挿誗嬂一圆渀一为汯跿赨區一冧櫿跿蒂刀一衴緿跽瘮一与産跿跚冰一仩綿跿计嘀一岛懿跿栕帀七瞪跿跶澌一为栏跿赨槀一冦擿跿蒇舀一衣巿跽皉一与琋跿跚坰一仩氿跿订猀一岖觿跿栬渀七睤跿跶焄一为掯跿赨莀一冥廿跿艶提湦桛呒俍睺杈呗埉絲岈万殈乆槜呖蚁絵欜啗庁瑩椙怆揉聯檎瀀俉瀀徛蔆掸湩榜啗庁瑩椙怆揉聯檎瀀佝聩欙怆枥穥嘙攧垽耺嘀勷侕簠桛甇提湦桛呒侕聲槜熢丁孡樈咖蟁荴嘙璖羔湥檜瓷囨渀捜萖殔蠠奖著羑欠崚擧俕艦桛呓蚀詯歝唇揑瑩椙懠两筥嘙擦宽牥丂惖庁牥曛葆戀圼桛甇揑瑩椙懢亁繡櫜耂芁良嘜瑖厐湦檛蓒俍艤桛渀狱絵欜啗徙睬杏瀇侅腳嘋怇徼湷檚敆抁良嘜蕆徽荴东蔆掹爠欚擖拨渥椝擗娨一一一一一一一樀一一一丸一一一一挀一一一万侁幀娈伀凃滐縬堉倁繠成儂乀仰蘴娋傂庀一一一巳言一丿臰一一跏縀一仿巀一一一专渄蘁尀憇一一一一冀一一一一刀一唀一丈一三一一一一偀一丂一一一丁艖乐喀嬀丏一一言一寑縀一一七縀一什一丰丆三一嘀一一崀一佀侀三丘七舁縀妀娀乄庰帅漁什帀一一一一一一一一一一一一一一一一一乌啀一刀一掇帀丄一丘俐一伀一咡舀丁一万年一乀一俸欀一帀丂嘝一丐一互啀一刀一甇帀丄一丩濐一伀一夁舀丁一下癴一乀一儐欀一帀七尝一丐一付啀一刀一蚇帀丄一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一丁劈湠刀一久也旗蔷徑睮樀北嘢幀旗菷寑牯歝唀偁乤汛呅词艵暗萦玹牥檀圇嚀彀旘蓆讍祟柙敇徥筥两万嚠彀旙斆珐亐东焁匁浦柙敆娂帀檎伔佽瑯標擠偀乲帄戅讙繵欘縉丁聈剐叶柉獡最圀俉帑帗葧毉睴杀圀俉昑帗蓖莅縀爀唦久也楝擦莅縀爀唦湅也槜呖蘂帀檜伔佽繥檜瓷嘂帀檞伔佽繲桛畆昂帀檠丑匁浰歝唰偀乲瀀弔佽聥毚擦市帀檤丑匁浳欘敂弥屏弑慣市帀檦丑匁浵榙著後亐一一一佟丁帀捽筨旙斆掍荴杗蒆掅牥檀冶掹焀巙呖威畧杝号寑潲欗蓗娂栁楘撖蘂洁亀一一偯朙帄羉荦丬縐三洀挀塀刀偬杛渆垙睬杀圀刌仠哀一垽牥丝吧掘亮乀严訁言础帀垱獮丢縖枥穥严帐娃渜一縍乴七丠倰丌亠堀丰净瘀什夂稀儀縍帀娂湁丁下儅一一一一一蘆蘀参縅瘁挌上帊一剀蘀丘丁上縸一吀乀佰开丆一市樚一侀丐仄唀丁渀刀亀一丼伐一一一伀一你一丏傀上亀一乀一乸一七縐七业一丐一並一一訄一渄帀丄一丌縀一崁一吀蘀丁一七言一凂渀僀渐一帀丁唀一仰刀亰區一刀一懀一丼伀临仠一伀一叀一丏乀与临一乀一侠一七縐一渔一丐一乶一一訄一樅一丄一丟一一伀一帀一一一丈昀一乀一刀一一一丂开一丐一伀一一一一瘀一丄一乀一一一一塠一丁一丐一一一一傴一一帀丄一一一一亴一一刀丁一一一一丮縀一伀一帀一一一丌嘀一乀一刀一一一七堀一丐一伀一一一一舀一丄一乀一一一一宀一丁一丐一一一一典一一帀丄一一一一仦一一刀丁一一一一主渀一伀一帀一一一丏帀一乀一刀一一一七言一丐一伀一一一一傀帀丄一乀一一一一传刀丁一丐一一一一临一七渀一崀一伀一丑一丁嘀一勀一乐一丅帀一搀一佰一丘一丁爀一咀一乬一万一一一丐亰一丌一丁舀一兀一丸一七縀一帀一伐一丒一丁娀一匀一乔一丅渀一攀一侀一丙一丁瘀一哀一买一丈丅譽筨旙斆掍荴杗蒆掅牥檀叶徕煢歙清讑獣槙呐佽牥曛葆捽瑩椙帅讑獣槙呕讱獮丗葖融灵枀叶掹煯朙帅讕籣槙呕讙睬杀叶掹煯朙揶羕簀旙著彽腴晜畅讵脀旛搖玸也旗蔷徑睮樀叵譽腴望蕗忀也曛哶宭浧杝商玵猀旙斆珐也枙著後也枛蔆掸也果啗後也果瑖厐也枝蔦珑猀旛擖叀也楝擦莅縀旛蔆掸也標攧垽耀旜唦玹艦丗蔇揑脀旜瑗殥籤丗蔷待舤恓狴弔萴丗蕖螝獴曀呇玱牟櫝啖坽灩榙呗嘀一一一㴃 \ No newline at end of file +3. Decode simple text 简单文本解码 + +```bash +echo -n "婌焳廔萷" | iconv -f utf-8 -t utf-16be | ./base16384 -d - - +1234567 +``` + +3. Encode file 编码文件 + +The text below is the encoding of the base16384 itself on MacOS 12.6 arm64. It is clear to see the strucutre of the binary file. + +下面的文本是使用base16384程序在 MacOS Mojave 版本下编码自身的结果。可见文件结构十分清晰。 + +臾糟蘜一乀縀倀倀一仰一习佀丈戀渀一一乤一丒一丁浟成扴捩卒懀一一一一一一一一一一伀一一一一一一一一一一一一一一一一一一一丙一不渄一旗荄捡戀一一一一一一一丁一一亀一一一一一一一一丠一一一丅一一戀一佀一一一丗菷徕虴一一一一一丅譽扅搕一一一一一丂爋一丐一仈刀一一一眂縀丈一一一一一一一市一一一一一一一佽浳欝搧娀一一一一也旕剕潐一一一一一丛俀一伀一唠一一一丆繰一乀一一一一一一嘄丠一一丆一一一一旗蔷忕灟栙擇侕耀一叵譑単挀一一一一一冀樀一帀七尀一一一仠唀一嘀一一一一一一乀倀一一一一一一丅譽煳欜璖螜一一一丁浟挑掅帀一一一一一禇帀丄一丸帐一一一壡舀一一一一一一一丈一一一一一一一一也旝擧殥籤旚擦枼一丗菵引晔一一一一一三乼一乀一俀一一一丂帟一丠一一一一一一一一一一一一一一一侐一予乀丅譽剁挐帀一一一一一丠一丐一一刈一一一丈一一一一伀一一一丰一七一一帀一一一佽浮椗蔷玵灯椗蔇忈也旑刕弄一一一一一一倀一伀一亀一一一一亀一什一一一一一一吀一估一一一一一一旗葶诐一一一一一一叵謑佔幀一一一一一丠渀一帀一昀一一一丈嘀一娀一一一一一丁渀一戀一一一一一丅譽穡旜薖莉絬旜啇嘁浟弐捄刀一一一一一嘈一丄一並一一一一倂一七一一一一一一东一丅縀一一一一一也旘蓶莵絮一一一一丗菴弅扁一一一一一丌亀一乀一丰丠一一一一一乀一一一一一一乀一一一一一一一一侐一么一丅譽婉憒艔弥戀一一一丰嘀丐一一刀一一一丌一一一丼习一一一丐一丁一一一一一一予一渌一一丰一亀一丈娀七一一一一一一与儀一币一劃刀付一一嘀一吀一你耀三一丁丵一夀刀下一丅一一一一丄一一帀一嬀一仠一世一一一一一一一一一一一一一一一亘嬀丂瘀一一一一一一一一一一仠一丠一一縀一姝攷嚽穩暋葇玱爀一一一丛一丁渀一斪罒跻舷圪讫惙硗垚愠一丠一一刀一七溠一崊一帀一儀一一么倪一丁一一一一一一上一倀昀一峀稀一一一一一一一丰一与一一昀一丠一一一幐一伀姝攷嚽穩暋蓆玉慹櫝呖芹倮朞擆玈一一一亘一丄一一渲一侀一丩一丁一一尌渀亀一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一丁捈灹挴瀏稘怣揞烼吀一劈畻皮刀丄澤姨什丄烣椴箵蘭虭先诚纄瀧幈繺凴焇蠒怣幀圠俈怠詁潭毃捒嚞挅敁掐捅嬢凬删跰忔蝉災劈筸嚀峋敒茢域蠮伀丂埁滸淨巤偵媑嚧稅侀距啓怏蘂歟粇蘈一簿淿跿礊蠜渠丂蛿跿跴瀏刐擐揄卹佟数貅稈一簿緿跿秧滾丰谖夀一嘇稉舏潞縐丁嚍整姰昀一怢毮熰崀丒咐綠儀丒妍竒蓗溷澴嬣蕫倒暝朢埐怰沃謧俾劒帜朤俎裒劈荷庿侀一伢埞蠬仰丁嚸蓍奭氋氛廒嵶稡垉莒咐嶠儀丒嚝匣俩巒樟虉圁膒帜朦奄圂剈矠僫仑感朄嶾翠趆忐皃谙廸敘一丒暷纐幉烝偁漢嬕粄缀伢嬍盄縀冣码一岱茦奼圄劘篐爘怣彙穌帀怣廘幌一蠼繐丁侉翓晟柑晅潿蕕嬦奄圆周嫠筴怒囕蕂贆一丄瀧注亃縀伡眳蠀縀伢蛛嬭筸奸楃怽蒰漢埐怰沃謣俺劒东地矶怀此瀴謔刀七唃瘓净七唁厅跃虉添跿幣承谏蘆毑劈舷昀一劆娒佈乲巾伢嬽譃縀冣欎一妀刀一衚巯跿盐一下燯跿跺掟觿跨繀一僣諿跿貔移跿怣懘湀一蠪廠丁劉谺慯觿赈煏檐言仨獃渀僠倀一岒击跿怣懝娼一蠟绠丂蘃一与爫賿跒囓蕰崀为咐蘀亸伀一冧苽跿芈苷洏一岅娸一簁帀七矞赿跴瀴诧净与滴尀丮习一仩耿淿謢嬽覃縀冠甎一妀樀一衬緟跼崟丌淿跽蟿跿蛿跿趥跿跻緿跿艿跿趟跿跕抈疕嚍嵵绰七盺兀丄瀴謘刀与熸嬀丒囓苘帀为尠舀么煏慱一仨莃帀伢嬽射一冣堍一劈苵倐一岋蘴一怣懕繀一敺椐舀亐爤協瀧獁提捤单佔拒嘞肠一丒暜茦埖怢涶栌购怢敜濔捈灼犈獷幈烁橱一乌烈儜疬荈煭意跿赈灷貆訴一幯縐一亅縃虖済一怢苙伢叉凢厰嘀么灗欄拇版烕檆栌蠭歃劈稖吐一勈竣礘怢檴瀴菭净丄瀧旨蛃一伢埙恢橴萗贏漪帀丁嚅聃虊稀一怠涐刀帀凣柠一么灓樄瀭诐婽焜冣弌一噜举嘹乀丈甌翿愢葜伲埦粀帀丂蜂一丄吧久婲沉舰一怠趏訾刚乀丈獷幉曳劆畆愤恤犌喨湄乸皝唇真繾渠唪嬜荀一一矚幣捁懾出佃虰娄一怣廙訄一怘罉匠俊跸犘甚凋侺涰一乁緀渀七睩乀丄萗牵唒囓扤崀丒嚷蕃瘋儀丄琧剈潰仸悤一丯跠一乌灿粏測一緿縀丁媉趺岰稀亾乀一僫諿净勈痝媉虺寀稀么潰啂謲執灱狈疪蜸恄渎濤唀丒吿僨伀一勈疽媉豺妀稀么潰啛膧洀一劈笗噦滎僗帡媉跺嗠稀久婿芈笗幦滎僐谓倀一勈疟癥僀与瓔一丐槰戀一衪渀丁便侀一冦洀一创訌一为杀一义灱瘼娣礓恢橮稹垉羠誰憬呉灱瘼娪凃启跠一乌灿粂昬一緿縀丁媉趺侐稀乌災苈算乄灹狈疪埙蠯繠丁噣訮渐一乌灻苈痧盾傀丄瀗乴墓嚟欲埦蠾溠丁嚋彲周嫠筴倓嚟趢谊一嚷蕃皰傀丄拇跫侐槰帀一弢涄瀇动一丅笅橁敐揤卽毃枤启跿赪趿跶移跿捿跿譗跿跚緿跽捈灹戕欅摁挔芈旽艶恢浴瀗葴歒暜蜢埓恢淋跸一专嚟覡渊一姿言一愢淮潌堀丯渐一人贿绰伢域愢氞漐堀丒噜俐赈灷蚜朲埲籎劑嘃盡佀丄澏纺乀一伲執愢涞満堀丒噜俖誸伀一冬庸什一冬垸亀一冬倱縖舕缅汁旗樵挢埥幕舕朅捁挔茈旽虨幢浸旙虨恢櫤琧捁灿劈苗嘌一妠嘀一弢淾渜堀丮総証乄灹苈疻盟偀丄瀗乴嵓嚞谧呌灼禓漤怀蠓乐丁噣萑嚟謲埶怢殮焼圀丒冝濷冸伀一冬庸什一冬垸亀一冬倱縒嘼帡楁攐揔卹佟数荔瀧獁提捤单佔拒嘞肠一丒暜缢坕縒暟挢埻枠臲菔恈灗欄瀬厢儀丄耬縱蓺腴瀶茰跿跴瀧淨悂帀伆贁一丈攀嶅搀渀伢奍爒噜爾噋亀丄瀧噈灗欄拇葈灲葤名謀奓嚖蔡茌怢繕爰一愢膎穉嚍孰纰丁媉觺妐渀义灱苈箷乍潿绸慈一丒噝稾勔一丄瀇褁丄一谷唀一劈篷帱讌樎炨嘀両樀谣吁一刘甘翿怢毫瘄一丮帠一乁灰剓唧癹倀丄瀏蛿凡塰刀义灱嚝甇蜟繺忐啦埈繾丸嶇蘩繠訑勇乁渏偏蘾拀恣懄张俀灷炜朲埪蠁习丁噣訮渐一乌灻苈痧瘟倀丄瀗丏漆縐丁媉蟒嚝覠攈一劈笗噦滎僗帡媉跺宰樀乄災貌舜一彌淾狔伀丐槰嘀一衊渐丁宅讝忄瀴菅傀丄瀭诐蠭繰丁垉羒噜举刃乀丄耧藨畁縀价谀一啐眲執蠣湰七礊灱苈痛盖俀下蘄一丮渀乀乌灹苈症癿俀丄瀧内蓃蛨樀一愢浾潨唀丠趏译劃谏敓挲執蠒买丂叀欌芈略囁虈劋瘀一一帀丁嘁艒吽嬇各匏曕稉囁豈刘渐嫫傢橴耧蓨杁縀伲埧灷狈疪蜑七渎熤刀丒吿僨伀一勈疽媉豺乀樀么潰仸掇跿跐槰帀一裏芈笗噦滎僗帡媉跺娰昀久婿芈笗幦滎僗庁媉诺壠昀仫厐槰戀一裃爛記一为繤哼儀一剈痡嚁缪一丁楁攐揔卹佟数荔瀧獁提捤单佔拔劈旽舧恢浴瀗葴塒暜缦埖恢淞潸吀丏淠一乵喓嚞趡崆一岱裠儀一岛縀一簀渀七瞲一丈甝媉覺嘰昀亾乀一僨一刀勈疝媉衺僀昀么灰虝稾岆一丄耧編俁渀倏蛿欑嘿滵茵愢泾燔匀両樇廍嚉葒娞劁嚺一一丄一丒丝匡燓幱湁延孛互娟犁侈伃岰砧啌灻粁嘘一愢汸畹媉誮弐丸仨玀縀伡燰粀帀丁媉诓嚟疢缅一劈攀嶅晿跿賠刀一岰囇么滱亅笅橁敐揤卽毃捒嚞挅敁掐捔卑慈滻侄瀥揀灟欈旼嶈赀一倧膅讃蚏瘀一恢櫬昄人亀一倭诐怢櫮濨匀丒嚜哠唀一劈巤倏然縀丂坝脑愞茆举趐廹攕匁襒搽茦嬴單渀乀么塶皷蕃癀佀丄琧喅蓟纔搗贏熨帀丁匱蜑晟诹廆彵縋瘄一丢藝伢孵菺估戀亊彵臃菔抺乀一倭诐怣敝涣褄一嚤敝匁赡娇幍坣腐橠常譄煚帤吡刎乺繤哰伀一勈痝劉覒嚵蔁嚉蒮弐丸仨桀渀伱燸烟櫄瀧汌灾粌渐一形汔继蘏煓淿跾蘄一与穂蘃一与稦蘂一与稈翀怠詁潭作幗戕蜅浝绤圅挢埥幕舕朅打怘詤羧亓園朤甇瘠幀洄性仁蠇舜嗠偁买刨舓匀一丄劧乂煓乯谏蜅毈犈艷唁一劆娲奈乶淾吏嘆裃昼丣礈滲乎税净傐帟倏哹氞拆崹匱蜒榠一一一巳謦褀一丏諼一息渄蘁尀憀勤拇赊烇側渿奈灷犌喸偌噵犈略囁衁勂啥嘉詒嚝蜣修侠池七贿怂櫬喬嚁蛿臰丁嘉諓丟嬠巋悢忏眧跇恠詀欴蟌涬岰朔翿彌汄搗丏漄帐丁吏箃側耧坈繺帤琏漃恰氐蜤埉幠趀刾勒一丄瘾豌埀抈甹囁螁瘞昀贀专亜蜢凡仒娞剑垉聒废匆凸亃虊帀一悃觤纜偈灳犌喘媁螀一訁娉膒嘾刽囁虇劘甥圉詐昿渍艺悃觤纜先灳犌喘抁螀一丽娉膒嘾刽囁虈犘甥圉詐昿渑艐悃觤纜剈灳犈喛一一劌喘桌偳犈嶄赈繸悤琧坉偼战巠却坒滻蜰甅怢櫤瀇瓀一丄焇琢愂櫤瀏漿怰氓传埱恢檔烥尀憀勠伸乌乲抨爳衈曲婤師谽弢剀秽楁攐揤卽毃枤勏觿赂趿跴姻跿忿緿謟賿跔淯跽噣羑愜倁訇趏敓茐嶾弁跴吵仿滾乗檹嚍兲帐丁噣传技唣跠滱綮穦准谺罈崛詁簀帀七礉滱絤哠吀一協瀧獁提捤单佔拢洌嗠淁蠇帟倧俁豀蘾几矈庣拀処叉氞苆崥匱蜒榠儣資趱跬欦褀一一七諿息渀一仼跀丄瓼一縿绰一久婻抨穳絈凲芘苒案灼拂啥嚉諓借嬢嬌瑒嚟嬣俣伓借笠埋怰池标琀跏縄渧汈凳犨狐灉跱折崐啍屳嗫熬呅婻打喑刁縑晜举勠一丄砬諯煓褬喤岃虀蛘胧图跿舨渰灁滾丐谒谀一劈萾胿穿蚜複簆湹緀一争胰沱怏焃偼舨潰瀁幠趀嘾劓一丈画修儠汯一一繺忀病傈愈渤吏蘃欞劋糋趱跬淿跽嘁賢毬喸抁螼一丁嚉葒娞犊凡凂洔堡娢仐昿渑艉怢殔焇眚湸樀一么繺肨嶌贉胐皅纈剁滾乗庡嚹窿褟資趱跒东謢培怰沒堇激一丄焇細滹臰甽傈洈湕笅橁敐揤卽毃悿緿謃賿跐巯跽叾跿艟觿赕趿跿誖簃一已擀儀丿聛嘌一跉楀娀仿坭渰七败簀縀凼玺什丏誖訃一已擸儀丿聜丌一跉樠娀仿坱丰七败羀縀凼珈什丏誗堃一已攰儀丿聜蘌一跉欀娀仿坴渰一一愣忑爌一幔跲护儀两咀一一衹緿跽瘕一与畳跿跚倠一仩芿跿讠縀一岜燿跿栏帀七瞾跿跶漨一为楏跿赨揀一冦磿跿蒆帀一表巿跽癲一与瑛跿跚嗠一仩焿跿订娀一岘姿跿栦一七睸跿跶炘一为擯跿赨筀一冥狿跿蒌嘀一衖緿跽盏一与獃跿跚局一仩徿跿讣脀一岓臿跿栀渐七眲跿跷寁獮月商玵猺嘉擇掵脊丘琗宔缶嫎充讕聲旙著彽瑩椙揷宥补丘琗宔缶嫎充讕聲旙瓷侕籟槝敇俕艟枚擆戁灡櫙愓曌蘴旙攧坽瑯標擥讥籰歝叶枥穥丘琗宔缶嫎充讕聲旝蔦珑獟枚擆戁灡櫙愓曌蘴旙攧坽絰杛珶玹繵欗葦玱猀暘收拄萳對叶揉聟楘攅讥籰歝叶枥穥丘琗宔缶嫎充讕聲旜瑖厑浦桛呐侉潳杌慣嫠舀廛蔇珉睧栝倂澌眠媌儣嚁呵楚搖莄湍桛琖莽良如爦反猱完膃庀耮媋焢亡剥曈儓忑瘠媌儣嚤簠捜萖殔蠀暘收拄萳對倅窵獤欗怅箥籰歝呦玱獝嘖蓷揑繵欙璖羕欀嘈僖戤坥榘蓶徔丠嘋摀爥牥曛葆戀渠奝亐珍癯毈唷侕籤嘝咖莔丠嘚擧俕艦桛呐珁潳櫈僒俑素檙搖庁瑲槛怇寑物榀倂侽荴樝敆枥穥停吗富渭嘝哲保聩欙怇徼湳欙哷提乷暀唦嘃賿一丐一东一一嘀一圀一一一三一一倀一伐稐俑搁帚帬一崀一仰一丛忀一一一净一七一一縀嘀夀丠一一仒一一娃一璀娀佘侀丏樘丁瘃一儐尀乀一丄伀乀帀一一一一一一一一一一一一一一一一一仰唀一刀一貇一丄一丁俐一伀一仡舀丁一丁湴一乀一予欀一帀一稝一丐一丶啀一刀一帇帀丄一丒濐一伀一十舀丁一丅虴一乀一侠欀一帀丁耝一丐一乼啀一刀一澇帀丄一两俐一伀一垡舀丁一上年一乀一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一丁劈湠勀一久也旗蔷徑睮樀北嘢幀旗菷寑牯歝唀偁乤汛呅词艵暗萦玹牥檀圇嚀彀旘蓆讍祟柙敇徥筥两万嚠彀旘蓆词猀爀唣久也枘蓆词猀爀唣湅也枙著後亐东爁匁浦槜呖蘂帀檒伔佽瑰歝吰偀乲戄戅讙聥晙三丁聘剐叶柝聩欙帉丁聠剐叶莵潰两万垠彀旛敖螵潰两万埀彀旛蔆掸亐东疁匁浰杜甦诈亐东瘀剅也樜璖蟑琀爀唨渄彀旜啗忌亐东眀剅也檙搖市帀檦丑匁浳欘敂弥屏弑慣市帀檨丑匁浳欜瓆掸亐东碀剅也歛瑶揑焀爀唫丄彀旝蔦珑猀爀一卼丅丁珶莡浥氙搷揑獟栙搖徕耀慙著彽腴晜畅讵脀扛搖玸乖暘收拄萳對台佭牥曘畖昃圁杛琶埕琀膀帠一七丩佰丌们叀一垕籣槙呐侹牥曛葆戂搁一珶昁蔀緀帀宥穥両縗丂威最圐刌二喀丰凰焀什垲戀丂旙渊丄仄乀丶玱猀稀攀僔佤丮渐娂舦一縏檬七両烠丌仄娀丰冠舀什娄刀刀舰戀一一丩佴焐卜訁柰呤促佣縫蘊爄一一偐尀万一布爑一侀丐乐咀丁渀刀指一习丄丧帐一封一夀蘀丁一一嘀一净开一一一帀一搀一仰刀乨咀一刀一堀一丼伀丁潰一伀一凐一丏乀七幌一乀一佐一七縐七蔕一丐一乩一一訄一弆一丄一丞縀一崁一垱嘀丁一三一一净帀丰崀一帀丂甀一仰刀仼剀一刀一紀一丼圀丰倀一伀一婀一丏偀不亀帀乀一儰一七縐丂爋一丐一仚一一訄一褂縀丄一丸一一伀一帀一一一与瘀一乀一刀一一一七茀一丐一伀一一一一伀帀丄一乀一一一一亰刀丁一丐一一一一乌伀一帀丄一一一一业乀一刀丁一一一一丈帐一伀一帀一一一丂渄一乀一刀一一一一紁一丐一伀一一一一寀帀丄一乀一一一一凐刀丁一丐一一一一伔伀一帀丄一一一一之乀一刀丁一一一一且縐一伀一帀一一一丅稄一乀一刀一一一丁漁一丐一伀一一一一柀帀丄一乀一一一一啐刀丁一丐一一一一俴伀一帀丄一一一一亅乀一刀丁一一一一丣丐一伀一帀一一一丁一一剀一么一丄縀一戀一佐一世一丁樀一吀一乤一丆渀一椀一俀一丝一丁蘀一嗀一亀一丈帀一瀀一一丁与一一言一囀一乀一丄帀一怀一估一且一丁戀一厀一乜一丆一一最一侠一丛一丁縀一啀一乸一万縀一渀一倐一丢一丂丁浟楚叶握獣歝呕计獡朙攠佽灡櫙愓曌蘴旙呖宽牥丗萦反猱完膃彽牥曛葆捽瑤丗萦反猱完膃彽牥曛葆捽瑩椙帅讉潳杌慣嫠艟朙搶讑獟果丅讉潳杌慣嫠艟杛琶讑猀旘琗宔缶嫎充讕籣槙呕讙爀旘琗宔缶嫎充讕籣槙呕讙睬杀叶垅腥婍焳滑浥榘蓶徕浦樀叶徕煢歙清讕籣暝摠佽略欗蔷待聴旛攰佽筡桛清譽浳欙咖蟀也旗蔷徑絵欜丅讍穯曚菶殕艴桛摐佽煬槜葐佽瑣椛蔶戁浦柙敆威浦槜呖蘁浦樝敆威浦檙搖币浦毜璗徔也楛搗丁浭歛瓖叀也槜呖蘁浰杜甦诈也樜璖蟑琀旜啗忌也檙搖币浳欘敂弥屏弑慣币浳欜瓆掸也歛瑶揑焀旝蔦珑猀朞擆彽腴歘珶垥籤杜清证聩榝号揍潧杀一一一一㴁 diff --git a/base1432.c b/base1432.c index 3b826d4..faca57e 100644 --- a/base1432.c +++ b/base1432.c @@ -39,7 +39,7 @@ # define be16toh(x) betoh16(x) # define be32toh(x) betoh32(x) #endif -#ifdef __MAC_10_0 +#ifdef __APPLE__ # define be16toh(x) ntohs(x) # define be32toh(x) ntohl(x) # define htobe16(x) ntohs(x) @@ -192,7 +192,7 @@ int base16384_decode(const char* data, int dlen, char* buf, int blen) { if(offset--) { buf[i++] = ((sum & 0x000f0000) >> 12) | ((sum & 0xf0000000) >> 28); if(offset--) { - buf[i++] = (sum & 0x0f000000) >> 20; + buf[i] = (sum & 0x0f000000) >> 20; // 这里有读取越界 sum = vals[n]; sum -= 0x0000004e; diff --git a/base1464.c b/base1464.c index 09f698b..a29b002 100644 --- a/base1464.c +++ b/base1464.c @@ -34,7 +34,7 @@ # define be32toh(x) betoh32(x) # define be64toh(x) betoh64(x) #endif -#ifdef __MAC_10_0 +#ifdef __APPLE__ # define be16toh(x) ntohs(x) # define be32toh(x) ntohl(x) # define be64toh(x) ntohll(x) diff --git a/base16384.c b/base16384.c index 542660e..59bd4db 100644 --- a/base16384.c +++ b/base16384.c @@ -39,7 +39,7 @@ unsigned long get_start_ms() { #endif static void print_usage() { - puts("Copyright (c) 2022 Fumiama Minamoto.\nBase16384 2.2.0 (Oct 16th 2022). Usage:"); + puts("Copyright (c) 2022 Fumiama Minamoto.\nBase16384 2.2.2 (Dec 14th 2022). Usage:"); puts("base16384 [-edt] [inputfile] [outputfile]"); puts(" -e\t\tencode"); puts(" -d\t\tdecode"); diff --git a/file.c b/file.c index b1ed8c0..ff5bc09 100644 --- a/file.c +++ b/file.c @@ -42,18 +42,20 @@ static inline off_t get_file_size(const char* filepath) { } #endif +#define is_standard_io(filename) (*(uint16_t*)(filename) == *(uint16_t*)"-") + base16384_err_t base16384_encode_file(const char* input, const char* output, char* encbuf, char* decbuf) { off_t inputsize; FILE* fp = NULL; FILE* fpo; - if(*(uint16_t*)input == *(uint16_t*)"-") { // read from stdin + if(is_standard_io(input)) { // read from stdin inputsize = 0; fp = stdin; } else inputsize = get_file_size(input); if(inputsize < 0) { return base16384_err_get_file_size; } - fpo = (*(uint16_t*)output == *(uint16_t*)"-")?stdout:fopen(output, "wb"); + fpo = is_standard_io(output)?stdout:fopen(output, "wb"); if(!fpo) { return base16384_err_fopen_output_file; } @@ -77,12 +79,12 @@ base16384_err_t base16384_encode_file(const char* input, const char* output, cha return base16384_err_write_file; } } - fclose(fpo); - fclose(fp); + if(!is_standard_io(output)) fclose(fpo); + if(!is_standard_io(input)) fclose(fp); #ifndef _WIN32 } else { // small file, use mmap & fwrite int fd = open(input, O_RDONLY); - if(fd <= 0) { + if(fd < 0) { return base16384_err_open_input_file; } char *input_file = mmap(NULL, (size_t)inputsize, PROT_READ, MAP_PRIVATE, fd, 0); @@ -97,7 +99,7 @@ base16384_err_t base16384_encode_file(const char* input, const char* output, cha return base16384_err_write_file; } munmap(input_file, (size_t)inputsize); - fclose(fpo); + if(!is_standard_io(output)) fclose(fpo); close(fd); } #endif @@ -148,7 +150,7 @@ base16384_err_t base16384_encode_fd(int input, int output, char* encbuf, char* d #define rm_head(fp) {\ int ch = fgetc(fp);\ if(ch == 0xFE) fgetc(fp);\ - else rewind(fp);\ + else ungetc(ch, fp);\ } #define skip_offset(input_file) ((input_file[0]==(char)0xFE)?2:0) @@ -165,14 +167,14 @@ base16384_err_t base16384_decode_file(const char* input, const char* output, cha off_t inputsize; FILE* fp = NULL; FILE* fpo; - if(*(uint16_t*)input == *(uint16_t*)"-") { // read from stdin + if(is_standard_io(input)) { // read from stdin inputsize = 0; fp = stdin; } else inputsize = get_file_size(input); if(inputsize < 0) { return base16384_err_get_file_size; } - fpo = (*(uint16_t*)output == *(uint16_t*)"-")?stdout:fopen(output, "wb"); + fpo = is_standard_io(output)?stdout:fopen(output, "wb"); if(!fpo) { return base16384_err_fopen_output_file; } @@ -198,12 +200,12 @@ base16384_err_t base16384_decode_file(const char* input, const char* output, cha return base16384_err_write_file; } } - fclose(fpo); - fclose(fp); + if(!is_standard_io(output)) fclose(fpo); + if(!is_standard_io(input)) fclose(fp); #ifndef _WIN32 } else { // small file, use mmap & fwrite int fd = open(input, O_RDONLY); - if(fd <= 0) { + if(fd < 0) { return base16384_err_open_input_file; } char *input_file = mmap(NULL, (size_t)inputsize, PROT_READ, MAP_PRIVATE, fd, 0); @@ -216,7 +218,7 @@ base16384_err_t base16384_decode_file(const char* input, const char* output, cha return base16384_err_write_file; } munmap(input_file, (size_t)inputsize); - fclose(fpo); + if(!is_standard_io(output)) fclose(fpo); close(fd); } #endif