-
헥사(Hex)스트링을 바이트 배열에 넣기C++/사용자 정의 함수 2018. 12. 13. 16:49
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;
}728x90댓글