헥사 스트링을 바이트 배열에 넣기를 원하시지요?
아래의 사이트에 보시면 예제가 나와있습니다.
여럽지 않게 함수를 만드실 수 있으실겁니다.
http://www.codeguru.com/forum/showthread.php?t=316299
------------------------------------
void string_to_bytearray(std::string str, unsigned char* &array, int& size)
{
int length = str.length();
// 두자릿수로 만들기
if(length%2 == 1)
{
str = "0" + str;
length++;
}
// 출력 배열의 메모리 할당
array = new unsigned char[length/2];
size = length/2;
std::stringstream sstr(str);
for(int i=0; i < size; i++)
{
char ch1, ch2;
sstr >> ch1 >> ch2;
int dig1, dig2;
if(isdigit(ch1)) dig1 = ch1 - '0';
else if(ch1>='A' && ch1<='F') dig1 = ch1 - 'A' + 10;
else if(ch1>='a' && ch1<='f') dig1 = ch1 - 'a' + 10;
if(isdigit(ch2)) dig2 = ch2 - '0';
else if(ch2>='A' && ch2<='F') dig2 = ch2 - 'A' + 10;
else if(ch2>='a' && ch2<='f') dig2 = ch2 - 'a' + 10;
array[i] = dig1*16 + dig2;
}
}
int main()
{
unsigned char* array = NULL;
int size;
string_to_bytearray("01A4FE",array,size);
// ...
delete [] array; // 메모리 해제
return 0;
}
----------------------------------
김정호 님이 쓰신 글 :
: 이거 함수도없고..만드어야하는건지 .... ㅡㅡ;;
:
: *PointHex = "84125566778899" 이렇습니다.
:
: 각각 두자리씩 헥사값을 나타내는데요.. 두개씩 어떻게 분리해야할지...
:
: unsigned char cpData[0] = 0x84;
: unsigned char cpData[1] = 0x12;
: unsigned char cpData[2] = 0x55;
: unsigned char cpData[3] = 0x66;
: unsigned char cpData[4] = 0x77;
: ..
: ..
: 이렇게 사용하고 싶은데..어떻게 해야할지 고수님들 좀 가르쳐주세요....