PDA

Просмотр полной версии : Конвертировать String в Char [ VC++ ]


GlOFF
12.07.2007, 18:59
Имеется,к примеру, следующая строка:
String A = "2D";
Как превратить это в unsigned char, т.е. чтобы получить:
unsigned char B = 0x2D;

В общем из текста "2D" получить число 0x2D , Подскажите плз :)

Ni0x
12.07.2007, 19:39
>>В общем из текста "2D" получить число 0x2D
функция atoi() тебе в помощь

GlOFF
12.07.2007, 19:46
Ni0x Дай примерчик! На Builder C++ будет работать?

NetMan
12.07.2007, 19:52
http://www.daniweb.com/code/snippet470.html

GlOFF
12.07.2007, 20:04
NetMan - Немного не то!
Ni0x - atoi() - это AnsiString To Integer ?

String A = "2D";
unsigned char B = atoi(A);

Дает нулевой результат в unsigned char B!
Если же взять строку "22" к примеру, то в получим в unsigned char B 0x16 , а не 0x22 как хотелось бы...

NetMan
12.07.2007, 20:16
Смотри здесь (http://www.codeproject.com/string/hexstrtoint.asp), правда тебе придётся немножко переделать.

GlOFF
12.07.2007, 20:20
NetMan спасибо ;)! Я так не хотел отдельную функцию писать :(

Мне что-то не вериться, что С++ такой богатый и функциональный язык, а такой казалось бы простой процедуры конвертации как-то выходит и нет :confused:

Ni0x
12.07.2007, 20:39
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 не рулит ;)

_Great_
12.07.2007, 20:41
sscanf юзай:

string hex = "0x22";
unsigned char byte;

sscanf( hex.c_str(), "0x%x", &byte);

// теперь byte = 0x22

NetMan
12.07.2007, 20:53
Можно заюзать функцию 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);

scrat
13.07.2007, 15:13
было бы неплохо сделать новый класс унаследованный от string имеющий подобные фунцкии

_Great_
13.07.2007, 22:22
Вообщем с проблемой разобрались, а флудить все горазды. Поэтому закрываю