Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2013, 01:31   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию Convert to HEX

Доброго времени суток. У меня есть небольшая тупиковая ситуация:
Есть окно, в нем находится Editbox. Так же есть файл в котором записаны некие символы.
Так вот, проблема состоит в том, что в Editbox надо вывести эти символы в HEX формате. Подскажите как можно перевести char в HEX.

P.S. Желательно примерно так:
Символ 'K' в HEX = 4B;
Теперь 4B надо перевести из INT в char. Т.е. должно быть так: Array[0] = '4'; Array[1] = 'B';
Вот как такое сделать?.

У меня есть идея. Перевести символы с помощью стандартной библы С++ и записать их в файл. А потом считать HEX код как символы. Но я думаю есть и другие способы менее извращенные и быстрые.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 06.06.2013 в 01:35.
kineziz вне форума Ответить с цитированием
Старый 07.06.2013, 09:49   #2
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Первое что приходит в голову это банальное деление уголком, написанное в лоб. Вот реализация функции.
typedef struct {
char hightHex;
char lowHex;
} hex;

void toHEX (unsigned char Number, hex *hexNumber)
{
hexNumber->hightHex = Number >> 4;
hexNumber->hightHex += hexNumber->hightHex > 9 ? 65:30;
hexNumber->lowHex = Number - hexNumber->hightHex;
hexNumber->lowHex += hexNumber->lowHex > 9 ? 65:30;
}

вот как то так.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 07.06.2013, 10:05   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

На C (для С++ этот вариант тоже должен работать):
Код:
char a='a';//ну для простоты будет у нас один символ.
int b=a;//Вполне может оказаться, что это лишнее
printf("Hex value is %x",b);//Вполне может быть, что туда можно передать и char вместо инта, но я не проверял.
На C++ (если вы не хотите использовать функции из С):

Код:
char a='a';//ну для простоты будет у нас один символ.
int b = a;//Я почти уверен, что это лишнее, что это лишнее
std::cout << std::hex << b << '\n';//Почти наверняка туда можно передать и char вместо инта, но я не проверял.
upd.
Сразу не заметил, что вам массив символов нужен на выходе.
Возможно вам поможет strstream, хотя он вроде как deprecated.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 07.06.2013 в 10:15.
ROD вне форума Ответить с цитированием
Старый 08.06.2013, 19:13   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Спасибо большое всем за ответы)))
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
file->HEX HEX->BIN kakawkin Общие вопросы Delphi 1 25.04.2012 01:02
Convert.ToInt32 alex_triton Помощь студентам 9 23.10.2011 22:02
Convert.ToString D][mon C# (си шарп) 3 03.08.2011 08:38
*.prn convert > ??? CHer0BuK Помощь студентам 2 19.05.2008 12:14
Convert Voucik Общие вопросы .NET 2 14.04.2008 14:16