gpt4 book ai didi

c - 写一个十六进制字符串的问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:35 29 4
gpt4 key购买 nike

这是我的代码

/*
gcc -c -Wall -g main.c
gcc -g -lm -o main main.o
*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void stringToHex(const char* string, char* hex) {
int i = 0;

for(i = 0; i < strlen(string)/2; i++) {
printf("s%x", string[2*i]); //for debugging
sprintf(&hex[i], "%x", string[2*i]);
printf("h%x\n", hex[i]); //for debugging
}
}

void writeHex(char* hex, int length, FILE* file, long position) {
fseek(file, position, SEEK_SET);
fwrite(hex, sizeof(char), length, file);
}

int main(int argc, char** argv) {
FILE* pic = fopen("hi.bmp", "w+b");
const char* string = "f2";
char hex[strlen(string)/2];

stringToHex(string, hex);
writeHex(hex, strlen(string)/2, pic, 0);




fclose(pic);
return 0;
}

我希望它将十六进制数 0xf2 保存到一个文件中(不过稍后我将不得不写更大/更长的数字)。程序打印出 -

s66h36

当我使用 hexedit 查看文件时,我在其中看到了数字“36”。

为什么我的代码不起作用?谢谢!

最佳答案

当它处理“f”时,它将它转换为字符 f,它是 ascii 102,即十六进制 66。这就是为什么你得到答案的“s66”部分。

%x 以十六进制表示形式打印出一个整数。

我想你想要 sscanf( string, "%x", &hexInt )

这会将字符串作为十六进制字符串读取并将其值保存在 int hexInt 中。

关于c - 写一个十六进制字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603270/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com