BASE4096之定義及JS轉換原始碼

2021-09-18 01:37:16 字數 1387 閱讀 2510

function hextobase4096(hexstr) 

return base4096str;

}

function base4096tohex(base4096str) 

str = inttohex(num & 0xff, 2) + inttohex(num >>> 8, 1);//3 12

hexstr += str;

str = hotcodestr.substr(i + 4, 4);

num = hextoint(str);//hotcode:0xc080~0xdfff,unicode:0x6080~0x7fff

num &= 0x1f7f;

if(num & 0x1000)

str = inttohex(num, 3);//4 56

hexstr += str;

} while(hexstr.substr(hexstr.length - 2, 2) == "00")

return hexstr;

}

base4096編碼簡介:

base4096是菜農hotpower研究的一種中文傳輸編碼,它主要用於hotwc3密碼的密文輸出。

它類同base64(用10個數字和大小寫英文本母,2個符號共64個字元)。壓擴比非常高。

都是三位元組轉化為四位元組「可列印字元」(兩個hotcode漢字),這裡base4096採用了5+7位即32*128=4096個hotcode漢字。

例如:三位元組 ab cd ef

編碼為:c ab,d ef

用ab的最高位與c組成5位,ab的低7位,共12位。再或0xc080得到乙個hotcode漢字。

用ef的最高位與d組成5位,ef的低7位,共12位。再或0xc080得到乙個hotcode漢字。

即三位元組ab cd ed得到兩個hotcode漢字。

故:base4096的編碼非常簡單,例如ab cd ef這三個位元組

aaaa bbbb cccc dddd eeee ffff

編碼為:110a cccc 1aaa bbbb 110e dddd 1eee ffff

故:base4096要比base64轉換簡單許多。

base4096的解碼非常簡單,四個位元組分兩組,即兩個hotcode漢字。

其d15d14d13,d7這四位為:110 1,其他任意,即:110x ***x 1*** ***x

故base4096為:110x ***x 1*** ***x 110x ***x 1*** ***x

例如:字元「123」的base4096的編碼為「掱抳」,字元「abcdef」的base4096的編碼為「擁拃擄旆」。

菜農[email protected] 2019.4.12於西安雁塔菜地

JS陣列定義及詳解

js陣列定義及詳解 1 什麼是陣列 陣列就是一組資料的集合 其表現形式就是記憶體中的一段連續的記憶體位址 陣列名稱其實就是連續記憶體位址的首位址 2 關於js中的陣列特點 陣列定義時無需指定資料型別 陣列定義時可以無需指定陣列長度 陣列可以儲存任何資料型別的資料 比如說乙個元素儲存整型,乙個元素儲存...

JS 陣列定義及詳解

1.什麼是陣列 陣列是值的有序集合。每個值叫做元素,每個元素在陣列中都有數字位置編號,也就是索引。js中的陣列是弱型別的,陣列中可以含有不同型別的元素。陣列元素甚至可以是物件或其他陣列。例如 var arr 1,true,null,undefined,1,2 2.陣列定義 總結了四種方式 1.var...

JS陣列定義及詳解

1 什麼是陣列 陣列就是一組資料的集合 其表現形式就是記憶體中的一段連續的記憶體位址 陣列名稱其實就是連續記憶體位址的首位址 2 關於js中的陣列特點 陣列定義時無需指定資料型別 陣列定義時可以無需指定陣列長度 陣列可以儲存任何資料型別的資料 比如說乙個元素儲存整型,乙個元素儲存字串型,這個在js中...