【问题标题】:How do I save a hexadecimal value as a character in C?如何将十六进制值保存为 C 中的字符?
【发布时间】: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 可能不是问题。

标签: c hex


【解决方案1】:

来自How to display hexadecimal numbers in C?,尝试使用printf("%08X", hex_example)

这更像是一个格式问题,如果您仍然不确定如何执行此操作,请提供更多关于如何将十六进制值输出到终端的代码。

  • (0) 将数字填充到十六进制值的左侧。
  • (08) 给出值的宽度(即显示的长度)
  • (X) 十六进制值的标识符。

【讨论】:

    猜你喜欢
    • 2019-07-27
    • 2018-01-31
    • 1970-01-01
    • 2018-01-22
    • 2017-06-17
    • 2016-08-07
    • 2015-02-06
    • 2019-02-21
    • 2011-07-11
    相关资源
    最近更新 更多