尝试使用fwrite在C中以二进制/十六进制编写字符串

时间:2013-11-06 02:25:49

标签: c binary fwrite

我正在尝试以十六进制格式将字符串写入文件。

例如,如果我有字符串:“Hello”

我想将它输出到文件:4845 4C4C 4F。

我知道要使用的函数是fwrite,但是当我使用fwrite时,它将字符串写为“Hello”而不是二进制表示。

我使用以下函数来尝试转换它:fwrite(buffer,1,5,output),其中buffer是字符串“Hello”,输出是目标文件,1是字符的大小,5是我想写的次数。

谢谢!

2 个答案:

答案 0 :(得分:0)

听起来你需要用十六进制形式写每个字符;你可以使用sprintf来打印每个这样的字符串。

答案 1 :(得分:0)

假设buffer具有以零结尾的字符串,并且output表示您要写入的FILE指针,则:

int i;

for ( i = 0; i < strlen(buffer); i++ )
    fprintf( output, "%02X", buffer[i] );

因此,您必须将字符串的每个字节格式化为ASCII值。

您的示例显示“Hello”的大写字符代码,因此如果您愿意,可以在此过程中转换为upper:

for ( i = 0; i < strlen(buffer); i++ )
    fprintf( output, "%02X", toupper(buffer[i]) );