【发布时间】:2015-01-20 04:33:35
【问题描述】:
我的问题很简单。请参阅此处的代码:
fprintf(fpOut, "%01X",ciphertext[s] ^ test[0]);
fprintf(fpOut, "%01X",ciphertext[s+1] ^ test[1]);
//the array test[] is a previously defined array containing characters, so is ciphertext[]
如果我运行上面的代码,我会在文件中打印一系列十六进制字符 (1AB289DF...) 但是,如果我尝试在屏幕上打印,就会出现乱码。我所要求的只是一种方法来保存我能够打印到文件中的那些字符,以便以后使用它们。我不想将它们全部保存到文件中,然后重新打开并再次阅读它们。有什么想法吗?
【问题讨论】:
-
关心显示您如何将其打印到屏幕上?内存中存储的内容(只不过是 01001001001)与您希望它们在屏幕上显示的方式之间存在差异
-
所以你取一个字符,然后将它与另一个字符异或。这些字符是 8 位编号 0-255,由 2 个十六进制字符 00-ff 表示。您编写“%01X”,它将显示 ascii 代码 0->15 和 1 个 didgit,而所有其他代码都显示为两位数。打印时,您需要读取两个十六进制数字并将它们转换回 ascii 以进行显示。出于这个原因,我也会改用“%02X”,尽管 ascii 0-15 可能不是问题。