如何將檔案以16進位制寫入檔案
阿新 • • 發佈:2019-02-12
怎麼把檔案以16進位制寫入檔案呢。比如,開啟Editplus,開啟一個exe檔案或者其他,會顯示如下:
4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 51 13 E2 96 15 72 8C C5 15 72 8C C5 15 72 8C C5 1C 0A 1F C5 1D 72 8C C5 86 3C 14 C5 14 72 8C C5 7A 04 12 C5 14 72 8C C5 7A 04 26 C5 07 72 8C C5 7A 04 10 C5 10 72 8C C5 15 72 8D C5 1B 73 8C C5 7A 04 27 C5 05 72 8C C5 7A 04 16 C5 14 72 8C C5
我們有時候寫東西,很希望存入檔案的也是這樣的東西,這樣就涉及到怎麼把字元或其他int型別轉換成16進位制。
上面的程式碼就是將一段字串寫成每一個字元是16進位制的,佔兩位的。關鍵函式是fprintf,這個可以再百度上檢視很清楚。#include <stdio.h> #include <string.h> int main(int argc,char *argv[]) { char *strTest = "I am OK!don't worry."; int strLen=strlen(strTest); int i=0; FILE *fp; if((fp=fopen("C:\\text.txt","wb")) == NULL) { printf("file open failed!"); return 0; } printf("%d\n",strLen); while(i<strLen) { fprintf(fp,"%02x",strTest[i++]); } return 1; }