Вы уже использовали sprintf
для представления десятичных значений в виде строки;Вы можете сделать то же самое для шестнадцатеричного форматирования.
Используйте возвращаемое значение sprintf()
(которое является количеством напечатанных символов), чтобы переместить индекс в буфер в качестве места назначения для следующей пары шестнадцатеричных цифр, а затем выполнить итерацию каждого символа в десятичной дроби.buffer
.
Обратите внимание, что вы можете использовать возвращаемое значение (m
) из первого sprintf()
для итерации, а не для проверки на nul.
char hexbuffer[64];
int index = 0 ;
for(int i = 0; i < m; i++)
{
index += sprintf( &hexbuffer[index], "%02X", buffer[i] ) ;
}
Конечно, если ввод содержит только десятичные цифры (т. Е. Пользователь не вводит отрицательное значение, вызывающее -
в buffer[0]
, вы можете просто вставить 3
перед каждым десятичным знакомцифра, таким образом:
char hexbuffer[64];
for(int i = 0; i < m; i++)
{
bexbuffer[i * 2] = '3' ;
hexbuffer[i * 2 + 1] = buffer[i]
}
Если предназначались только десятичные цифры, вам следует изменить тип a
на unsigned
и использовать спецификатор формата %u
для десятичного ввода.