-1

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

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

我希望它被输出到文件中:4845 4C4C 4F。

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

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

谢谢!

4

2 回答 2

0

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

int i;

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

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

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

for ( i = 0; i < strlen(buffer); i++ )
    fprintf( output, "%02X", toupper(buffer[i]) );
于 2013-11-06T02:38:26.797 回答
0

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

于 2013-11-06T02:28:45.067 回答