Конвертировать Hex-String в Char [ C++ ] Имеется,к примеру, следующая строка: String A = "2D"; Как превратить это в unsigned char, т.е. чтобы получить: unsigned char B = 0x2D; В общем из текста "2D" получить число 0x2D , Подскажите плз
NetMan - Немного не то! Ni0x - atoi() - это AnsiString To Integer ? String A = "2D"; unsigned char B = atoi(A); Дает нулевой результат в unsigned char B! Если же взять строку "22" к примеру, то в получим в unsigned char B 0x16 , а не 0x22 как хотелось бы...
NetMan спасибо ! Я так не хотел отдельную функцию писать Мне что-то не вериться, что С++ такой богатый и функциональный язык, а такой казалось бы простой процедуры конвертации как-то выходит и нет
Это для конвертации char, в сишном рантайме есть целый набор функций для конверта разных типов данных. дело в том что string тип данных из std(библиотека заточена под С++), а atoi() предназначена для работы с char. Для определения строк лучше используй в зависимости от случая: char *str="antichat"; char str[]="antichat"; а string не рулит
sscanf юзай: string hex = "0x22"; unsigned char byte; sscanf( hex.c_str(), "0x%x", &byte); // теперь byte = 0x22
Можно заюзать функцию strtol: Code: 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);