У меня есть файл, содержащий матрицу из многих строк и столбцов. Это выглядит как-то внизу:Преобразование строкового массива в шестнадцатеричные числа в C
fa ff 00 10 00
ee ee 00 00 30
dd d1 00 aa 00
Каждая запись в матрице представляет собой шестнадцатеричное число восьмизначного значения. Я хотел бы прочитать этот файл в двухмерном массиве.
У меня есть две проблемы:
Используя метод чтения в моем коде, * он содержит массив, который имеет каждый элемент (два символа) матрицы. Как передать каждую запись в одну переменную вместо двух символов?
Когда я перехожу в одну переменную, как ее преобразовать из символа в шестнадцатеричный? Я имею в виду, что «ff» следует преобразовать в 0xff.
Часть моего кода ниже. Я могу избежать функции токенизации, если лучшие методы могут быть uesd.
char** tokens;
char** it;
while (fgets(line, sizeof(line), file) != NULL){ /* read a line */
tokens = tokenize(line); // split line
for(it=tokens; it && *it; ++it){
printf("%s\n", *it);
free(*it);
} // end for
} // end while
char** tokenize(const char* str){
int count = 0;
int capacity = 10;
char** result = malloc(capacity*sizeof(*result));
const char* e=str;
if (e) do {
const char* s=e;
e=strpbrk(s," ");
if (count >= capacity)
result = realloc(result, (capacity*=2)*sizeof(*result));
result[count++] = e? strndup(s, e-s) : strdup(s);
} while (e && *(++e));
if (count >= capacity)
result = realloc(result, (capacity+=1)*sizeof(*result));
result[count++] = 0;
return result;
}
ли вы имеете в виду взять 'фа Ф.Ф. 00 10 00' как число, то мы получим' 1078020018176'? – prehistoricpenguin
Нет, fa - это единственная запись. Поэтому я получу 0xfa вместо «fa». – drdot
Просто см. Мое сообщение ниже. – prehistoricpenguin