hex to char c

0 orion314 [2014-09-09 23:14:00]

Я пытаюсь сделать, чтобы пользователь вводил шестнадцатеричный номер, этот номер затем преобразуется в символ и отображается на мониторе, это будет продолжаться до тех пор, пока не встретится EOF меня есть противоположность этому коду, который преобразует символ на шестнадцатеричное число. Проблема, с которой я сталкиваюсь, заключается в том, как получить шестнадцатеричный номер от пользователя, который я использовал getchar() для программы char2hex . Есть ли какая-либо подобная функция для шестнадцатеричных чисел?

это код для программы char2hex

это то, что я хочу, чтобы программа выполнялась, за исключением того, что она будет делать это непрерывно

любая помощь будет оценена благодарю вас

Содержание

  1. 2 ответа
  2. Пример Example
  3. Пример Example
  4. Пример Example

2 ответа

1 BLUEPIXY [2014-09-10 03:54:00]

1 Erik [2014-09-09 23:23:00]

Поскольку символы и ints могут использоваться взаимозаменяемо в C, вы можете использовать следующий код:

Если вы хотите, чтобы он зациклился, просто вложите его в цикл while, как в вашем примере кода.

Указана строка шестнадцатеричных значений i.e., например. «0011223344», так что 0x00, 0x11 и т.д.

Как добавить эти значения в массив char?

Вы не можете вместить 5 байтов данных в 4-байтовый массив; что приводит к переполнению буфера.

Если у вас шестнадцатеричные цифры в строке, вы можете использовать sscanf() и цикл:

Обратите внимание, что печать строки, начинающейся с нулевого байта, требует осторожности; большинство операций заканчиваются на первом нулевом байте. Обратите внимание, что этот код не завершал нуль буфера; неясно, является ли нулевое завершение желательным, и не хватает места в буфере, который я объявил, чтобы добавить терминал null (но это легко фиксируется). Там есть хорошая вероятность, что если код был упакован как подпрограмма, ему нужно будет вернуть длину преобразованной строки (хотя вы также можете утверждать, что это длина исходной строки, разделенная на два).

Если строка верна и не нужно сохранять ее содержимое, я бы сделал это следующим образом:

ИЗМЕНИТЬ 1: извините, я забыл рассчитать с помощью букв A-F (a-f)

EDIT 2: я попытался написать более педантичный код:

В следующих примерах кода показано выполнение указанных ниже задач. These examples show you how to perform the following tasks:

Получение шестнадцатеричного значения каждого символа в string. Obtain the hexadecimal value of each character in a string.

Получение char, соответствующего каждому значению в шестнадцатеричной строке. Obtain the char that corresponds to each value in a hexadecimal string.

Преобразование шестнадцатеричного значения string в int. Convert a hexadecimal string to an int.

Преобразование шестнадцатеричного значения string в float. Convert a hexadecimal string to a float.

Преобразование массива byte в шестнадцатеричное значение string . Convert a byte array to a hexadecimal string .

Пример Example

Результатом следующего примера является шестнадцатеричное значение каждого символа в string . This example outputs the hexadecimal value of each character in a string . Сначала выполняется разбор string до массива символов. First it parses the string to an array of characters. Затем, чтобы получить числовое значение каждого символа, для каждого из них вызывается метод ToInt32(Char). Then it calls ToInt32(Char) on each character to obtain its numeric value. В конце формат числа меняется на шестнадцатеричный в string . Finally, it formats the number as its hexadecimal representation in a string .

Пример Example

В этом примере анализируется string шестнадцатеричных значений и выводится символ, соответствующий каждому шестнадцатеричному значению. This example parses a string of hexadecimal values and outputs the character corresponding to each hexadecimal value. Сначала вызывается метод Split(Char[]) для получения каждого шестнадцатеричного значения как отдельной string в массиве. First it calls the Split(Char[]) method to obtain each hexadecimal value as an individual string in an array. Затем вызывается метод ToInt32(String, Int32), который преобразует шестнадцатеричное значение в десятичное, представленное в целое число. В примере показано два разных способа получения символа, соответствующего этому коду символа. Then it calls ToInt32(String, Int32) to convert the hexadecimal value to a decimal value represented as an int. It shows two different ways to obtain the character corresponding to that character code. В первом случае используется ConvertFromUtf32(Int32), который возвращает символ, соответствующий целочисленному аргументу, в виде string . The first technique uses ConvertFromUtf32(Int32), which returns the character corresponding to the integer argument as a string . По второму способу выполняется явное приведение int к char. The second technique explicitly casts the int to a char.

Пример Example

В этом примере показан еще один способ преобразования шестнадцатеричного string в целое число — с помощью метода Parse(String, NumberStyles) . This example shows another way to convert a hexadecimal string to an integer, by calling the Parse(String, NumberStyles) method.

Источник: computermaker.info

Техника и Гаджеты
Добавить комментарий