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中...