Как преобразовать данные из десятичной системы счисления в шестнадцатеричную и представить их в виде ASCII-символов?

Здравствуйте! Возможно, мои изменения сделают ваш вопрос более ясным: как мне преобразовать числа 31 и 5 в 35 и обратно, а затем разделить на массив по байтам, используя пример кода, который я предоставил ниже?
  • 23 апреля 2024 г. 13:40
Ответы на вопрос 2
Для преобразования данных из десятичной системы счисления в шестнадцатеричную и представления их в виде ASCII-символов, можно воспользоваться примерно следующим кодом на языке программирования Python:

```python
# Преобразование числа 31 из десятичной системы в шестнадцатеричную и ASCII
decimal_number = 31
hex_number = hex(decimal_number)[2:].upper() # Преобразование в шестнадцатеричное число и удаление первых двух символов
ascii_symbol = chr(int(hex_number, 16)) # Преобразование шестнадцатеричного числа в ASCII символ
print(f"Десятичное число: {decimal_number}")
print(f"Шестнадцатеричное число: {hex_number}")
print(f"ASCII символ: {ascii_symbol}")

# Преобразование ASCII символа "5" в шестнадцатеричное и обратно в десятичное
ascii_symbol = "5"
hex_number = hex(ord(ascii_symbol))[2:].upper() # Преобразование ASCII символа в шестнадцатеричное число
decimal_number = int(hex_number, 16) # Преобразование шестнадцатеричного числа в десятичное
print(f"ASCII символ: {ascii_symbol}")
print(f"Шестнадцатеричное число: {hex_number}")
print(f"Десятичное число: {decimal_number}")
```

Этот код демонстрирует преобразование числа 31 в шестнадцатеричную систему счисления и представление его в виде ASCII-символа, а также преобразование символа "5" из ASCII в шестнадцатеричное число и обратно в десятичное. Можете использовать подобные примеры для преобразования других чисел или символов по аналогии.
Раз уж вы используете для преобразования в число strtol, то для обратного преобразования вполне можно использовать snprintf(asciiHex, sizeof(asciiHex), "%X", decVal) . 
Хотя эти операции достаточно простые, можно было бы легко реализовать самому оба варианта.

strtol ждет в первом параметре строку с завершающим нулем. У вас завершающий ноль в asciiHex отсутствует.
Kolchislo как объявлена? Это строка с завершающим нулем? Возможно стоит использовать strcpy, а не memcpy.
Зачем вам промежуточный массив asciiHex? Почему в strtol не использовать сразу kolchislo?
Похожие вопросы