Вот мой кодПроблемы с записью шестнадцатеричной строки
/*
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» в нем.
Почему мой код не работает? Благодаря!
Спасибо, что помогает. Но что мне делать, если у меня больше шестнадцатеричных данных, чем 4 байта? Я пытаюсь написать программу, используя вашу строку кода, но она все еще не работает. – quilby
Хорошо, конечно, я исправил это. – quilby