我正在尝试以十六进制格式将字符串写入文件。
例如,如果我有字符串:“Hello”
我想将它输出到文件:4845 4C4C 4F。
我知道要使用的函数是fwrite,但是当我使用fwrite时,它将字符串写为“Hello”而不是二进制表示。
我使用以下函数来尝试转换它:fwrite(buffer,1,5,output),其中buffer是字符串“Hello”,输出是目标文件,1是字符的大小,5是我想写的次数。
谢谢!
答案 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]) );