我正在尝试以十六进制形式将字符串写入文件。
例如,如果我有字符串:“Hello”
我希望它被输出到文件中:4845 4C4C 4F。
我知道要使用的函数是 fwrite,但是当我使用 fwrite 时,它会将字符串写为“Hello”而不是二进制表示。
我使用下面的函数来尝试转换它:fwrite(buffer, 1, 5, output),其中buffer是字符串“Hello”,output是目标文件,1是字符的大小,5是数字我想写的时候。
谢谢!
假设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]) );
听起来您需要以十六进制形式编写每个字符;您可以使用 sprintf 来打印每个这样的字符串。