Просмотр полной версии : Конвертировать String в Char [ VC++ ]
Имеется,к примеру, следующая строка:
String A = "2D";
Как превратить это в unsigned char, т.е. чтобы получить:
unsigned char B = 0x2D;
В общем из текста "2D" получить число 0x2D , Подскажите плз :)
>>В общем из текста "2D" получить число 0x2D
функция atoi() тебе в помощь
Ni0x Дай примерчик! На Builder C++ будет работать?
http://www.daniweb.com/code/snippet470.html
NetMan - Немного не то!
Ni0x - atoi() - это AnsiString To Integer ?
String A = "2D";
unsigned char B = atoi(A);
Дает нулевой результат в unsigned char B!
Если же взять строку "22" к примеру, то в получим в unsigned char B 0x16 , а не 0x22 как хотелось бы...
Смотри здесь (http://www.codeproject.com/string/hexstrtoint.asp), правда тебе придётся немножко переделать.
NetMan спасибо ;)! Я так не хотел отдельную функцию писать :(
Мне что-то не вериться, что С++ такой богатый и функциональный язык, а такой казалось бы простой процедуры конвертации как-то выходит и нет :confused:
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 не рулит ;)
sscanf юзай:
string hex = "0x22";
unsigned char byte;
sscanf( hex.c_str(), "0x%x", &byte);
// теперь byte = 0x22
Можно заюзать функцию 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);
было бы неплохо сделать новый класс унаследованный от string имеющий подобные фунцкии
Вообщем с проблемой разобрались, а флудить все горазды. Поэтому закрываю
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot