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;
	
}
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号