visual studio中如何将string类型值转为BYTE(unsigned char)类型

昨天困惑一件事,就是手里有个string类型的字符串,像01 23 45 67 89 AB CD EF,根据空格拆分为一个个的子字符串后(如EF),需要放到一个BYTE(typedef unsigned char)类型数组中,该怎么放呢?

首先BYTE是个什么类型?

BYTE即unsigned char,说白了就是0-255的数字。
visual studio里为什么专门定义了一个BYTE呢?

个人理解,因为默认如果你定义一个char myChar, 那myChar类型就默认是signed char,存放的值-128-127。所以专门定义了unsigned char。

可以看到还有专门定义的unsigned int,unsigned short,都是一个道理!

那像01 ,EF这样的字符串怎么转为BYTE呢?

方法一、

直接调用库函数HexToDec(string)转。

比如HexToDec(EF),结果为239。

方法二、

先将字符串转为16进制,sscanf("EF","%02X",&HexKeyValue);

然后16进制强制类型转换即可,(BYTE)HexKeyValue

下面是我写的一段代码,实现string到BYTE数组的转换

typedef unsigned char BYTE;
typedef unsigned char* LPBYTE;

LPBYTE spaceStrToByte(char* pSrc,int &length)
{
char *pKeyValue = (char*)pSrc;
BYTE bt[50];

char * substr = strtok(pKeyValue," ");
int i=0;
while(substr!=NULL)
{

int DecKeyValue=0 ,HexKeyValue=0;
sscanf(substr,"%02X",&HexKeyValue);
bt[i] = (BYTE)HexKeyValue;
i++;
substr = strtok(NULL," ");
}
length = i;
LPBYTE lpBt = ((LPBYTE)bt);
printf("spaceStrToByte--%02X",*lpBt);
return lpBt;

}

原文地址:https://www.cnblogs.com/jieliujas/p/8818678.html