У меня есть выходной массив из 5 байтов [0x00, 0x00, 0x00, 0x00, 0x ??].
0x ?? нужно заменить на шестнадцатеричное значение целого числа n.
Поэтому, если мое значение dec равно 20, мой выходной массив должен выглядеть следующим образом: [0x00, 0x00, 0x00, 0x00, 0x14].
Я начал с преобразования значения dec в hex с использованием следующего кода:
int remainder, quotient, temp;
int i = 1, j;
char hexadecimalNumber[2];
quotient = Num;
while (quotient != 0) {
temp = quotient % 16;
//To convert integer into character
if (temp < 10)
temp = temp + 48;
else
temp = temp + 55;
hexadecimalNumber[i++] = temp;
quotient = quotient / 16;
}
for (j = i - 1; j > 0; j--) {
printf("%c", hexadecimalNumber[j]);
}
Я могу вывести правильное шестнадцатеричное значение, когда печатаю массив в обратном порядке.
Но я не уверен, как изменить это и назначить выходной массив.
hexadecimalNumber сам по себе является массивом. Могу ли я назначить это для output [4], чтобы мой выходной массив выглядел как [0x00, 0x00, 0x00, 0x00, 0x14]?
Обновление : я попробовал это, и при меньшем количестве строк кода я получаю массив с шестнадцатеричным значением в правильном порядке:
char res[2];
if (Num <= 0xFF) {
sprintf(&res[0], "%02x", Num);
}
Итак, у res [0] есть 1, а у res [1] - 4. Как мне скопировать 0x14 в вывод [4]?
Я попытался назначить следующие вещи для вывода [4], но не копировал 0x14 в вывод [4]: * res, & res [0], res.
Резюме
Чтобы устранить любые недоразумения, я перечислил входные данные для программы и ожидаемый результат.
Ввод: N = 20
Output: char output [] = [0x00, 0x00, 0x00, 0x00, 0x14] -> Это просто шестнадцатеричное представление 0 и 20, а не двумерный массив ...