檔案編碼解碼小工具

2021-08-25 11:10:57 字數 2189 閱讀 2959

base64編碼解碼原理

base64編碼是用64個可見字元表示任意二進位制資料的方法。

以3個8bit的字元為一組,針對每組獲取每個字元的ascii編碼,將ascii編碼轉換成8bit的二進位制,得到一組24bit的位元組;

將24bit劃分為4個6bit的位元組,每個6bit的位元組高兩位補0,得到4個8bit的位元組

將4個8bit的位元組轉換成十進位制,對照base64編碼表得到編碼後的字元

說明:如果文字結尾不足3個字元,對轉化為6為字元後,後面剩餘的二進位制位可能是2位或者4位(因為是n%6),餘數為0時代表整除了,在剩餘二進位制位後面補0至6個二進位制位,再在結尾加=號,使編碼後的字元滿足(n*8+等號個數)/6=base64的字元個數

base64編碼表:

專案設計

編碼模組

//base64 編碼(編碼時字元是8bit表示)

void base64_encode(const

char* filename)

ret_len = ret_len * 4 + 1;

ret = (char *)malloc(ret_len);

if (ret == null)

memset(ret, 0, ret_len);

f = ret;

//每次都是三個字元進行編碼,直到所有的字元都進行編碼

while (tmp < data_len)

//prepare<<8:每個字元佔8個bit,源文字中每個是3個字元,每次或之前都向左移8位;保證3個字元得到乙個二進位制編碼

//data[tmp]&0xff:保證生成的字串是8bit位

prepare = ((prepare << 8) | (data[tmp] & 0xff));

tmp++;

temp++;

}//防止上述while退出時,最後字元數不足3個,prepare還是要湊夠3個字元的位置

prepare = (prepare << ((3 - temp) * 8));

//4次for迴圈,當3個字元存在的時候,就可以將其拆成4個字元

for (int i = 0; i < 4; i++)

else

*f = base[changed[i]];

f++;}}

*f = '\0';

/*printf("%s\n", ret);*/

writetofile(ret, fin);

fclose(fin);

fclose(fout);

}

解碼模組

//base64 解碼

void base64_decode(const

char *filename)

if (*(data + data_len - 2) == '=')

//為了4個字元轉3個字元的時候位元組進行對齊

switch (equal_count)

ret = (char *)malloc(ret_len);

if (ret == null)

memset(ret, 0, ret_len);

f = ret;

while (tmp < (data_len - equal_count))

prepare = (prepare << 6) | (find_pos(data[tmp]));

temp++;

tmp++;

}prepare = prepare << ((4 - temp) * 6);

for (int i = 0; i < 3; i++)

*f = (char)((prepare >> ((2 - i) * 8)) & 0xff);

f++;}}

*f = '\0';

/*printf("%s\n", ret);*/

writetofile(ret, fin);

fclose(fin);

fclose(fout);

}

C Base64解碼小工具編寫

1 介面如下 2 關鍵 如下 var reqstr txtinput.text.trim 輸入字串 var resstr 輸出結果 var errmsg if reqstr.length 0 catch exception ex catch exception ex2 view code 說明 2....

C 檔案複製小工具

60string newfile 定義儲存的位置,和儲存的名稱 61 62for inti 1 i convert.toint32 textbox2.text i 從textbox2中獲取要複製的次數 63 67messagebox.show 複製完成 68 69 70 view source pr...

csv檔案生成小工具

如果用shell來做這件事的,通常是兩種方法 1.捕獲終端輸出,後續對輸出做一定處理。但是終端輸出實際上已經丟失了很多格式資訊,很難做到完善處理。2.用mysql內建的file命令一次性生成檔案。mysql內建的函式功能有限,沒法做到比較好的輸出格式化。所以選擇了python來做。主要注意幾點 1....