Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Конвертировать Hex-String в Char [ C++ ] |

12.07.2007, 18:59
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Конвертировать Hex-String в Char [ C++ ]
Имеется,к примеру, следующая строка:
String A = "2D";
Как превратить это в unsigned char, т.е. чтобы получить:
unsigned char B = 0x2D;
В общем из текста "2D" получить число 0x2D , Подскажите плз 
Последний раз редактировалось xqwerx; 12.07.2007 в 19:45..
|
|
|

12.07.2007, 19:39
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
>>В общем из текста "2D" получить число 0x2D
функция atoi() тебе в помощь
|
|
|

12.07.2007, 19:46
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
Ni0x Дай примерчик! На Builder C++ будет работать?
|
|
|

12.07.2007, 19:52
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
|
|
|

12.07.2007, 20:04
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
NetMan - Немного не то!
Ni0x - atoi() - это AnsiString To Integer ?
String A = "2D";
unsigned char B = atoi(A);
Дает нулевой результат в unsigned char B!
Если же взять строку "22" к примеру, то в получим в unsigned char B 0x16 , а не 0x22 как хотелось бы...
|
|
|

12.07.2007, 20:16
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
Смотри здесь, правда тебе придётся немножко переделать.
|
|
|

12.07.2007, 20:20
|
|
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме: 1845671
Репутация:
1338
|
|
NetMan спасибо  ! Я так не хотел отдельную функцию писать
Мне что-то не вериться, что С++ такой богатый и функциональный язык, а такой казалось бы простой процедуры конвертации как-то выходит и нет 
|
|
|

12.07.2007, 20:39
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
Ni0x - atoi() - это AnsiString To Integer ?
Это для конвертации char, в сишном рантайме есть целый набор функций для конверта разных типов данных.
String A = "2D";
unsigned char B = atoi(A);
дело в том что string тип данных из std(библиотека заточена под С++), а atoi() предназначена для работы с char. Для определения строк лучше используй в зависимости от случая:
char *str="antichat";
char str[]="antichat";
а string не рулит 
|
|
|

12.07.2007, 20:41
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
sscanf юзай:
string hex = "0x22";
unsigned char byte;
sscanf( hex.c_str(), "0x%x", &byte);
// теперь byte = 0x22
|
|
|

12.07.2007, 20:53
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
Можно заюзать функцию strtol:
Код:
string str = "2A";
char *endptr;
unsigned char lnumber;
lnumber = strtol(str.c_str(), &endptr, 16);
printf("string = %s long = %x\n", str.c_str(), lnumber);
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|