Как преобразовать char в шестнадцатеричный, хранящийся в форме uint8_t?
Вопрос
Предположим, у меня есть эти переменные
родовое слово Как преобразовать код ndef_input
(который представляет собой обычный текст, например "hello") в шестнадцатеричный и сохранить в коде ndef_msg
?
Как видите, ndef_default_msg
имеет шестнадцатеричную форму.Данные внутри ndef_msg
тоже должны быть такими же.
Немного предыстории: в исходной программе ( исходный код ) программа откроет файл, получитданные и поместите их в ndef_msg
, который затем будет записан на карту.Но я не понимаю, как он может принимать данные и преобразовывать их в шестнадцатеричный формат.
Я хочу упростить программу, чтобы она напрямую запрашивала у пользователя текст (вместо запроса файла).
Решение
Почему бы не прочитать его напрямую в ndef_msg (за вычетом \ 0, если предполагается, что это чистый массив).Шестнадцатеричные числа предназначены только для представления, вы можете просто выбрать десятичное или восьмеричное без последствий для содержимого.
родовое слово Вероятно, вам нужно обработать чтение строки по-другому, чтобы разрешить пробелы и возможно игнорировать \0
, это просто для иллюстрации моей точки зрения.
Другие советы
Может быть, не очень элегантно, но просто: определите таблицу поиска, которая отображает код символа (от 0 до 255) в желаемое значение.
родовое словоЯ пару раз использовал такие не элегантные решения (например, для отображения цветов), и они работали так же хорошо, как и другие модные решения
Если я правильно понимаю, вы читаете данные в шестнадцатеричном формате, хранящиеся в ndef_input
, анализируете их и сохраняете значение в ndef_msg
.
вы можете использовать
общийНадеюсь, это поможет вам
родовое словоА ascii2hex определяется следующим образом:
родовое слово