vc中CString字符串转换成16进制BYTE字符数组,例如"123"转换成BYTE a[]={0x31,0x32,0x33}

字符串中只有数字和字母

我这个是将字符串里的2个数字取出来,存到BYTE数组里的。
BYTE* TurnToBYTE(const char* pStr, int&nArraySize)
{
// 计算BYTE数组的大小,如果字符串长度奇数,需增长1位。
int nLength = strlen(pStr);
int nSize = (nLength / 2) +(nLength % 2);
nArraySize = nSize;

// 初始化BYTE数组。
BYTE* szBYTE = (BYTE*)malloc( nSize * sizeof(BYTE) );
memset( szBYTE, 0, (nSize * sizeof(BYTE)) );

// 每次写入2个char字符。
for (int i = 0; i < nSize; i++)
{
char szTemp[3] = {0};

szTemp[0] = *pStr++;

if (*pStr != '\0')
{
szTemp[1] = *pStr++;
}

// 用atoi将char指针转为数值,并存入当前数组元素。
int nNumber = atoi(szTemp);
szBYTE[i] = nNumber;
}
return szBYTE;
}

void main()
{
int nSize = 0;
BYTE* psz = TurnToBYTE("123", nSize);

for (int i = 0; i < nSize; i++)
{
int nNumber = (int)psz[i];
cout << nNumber << "_";
}
cout <<endl;

free(psz);
psz = NULL;
}追问

int nNumber = (int)psz[i];这里报错啊error C2109: subscript requires array or pointer type

追答

我这里没问题呀,你看看是不是粘贴代码时有些乱码,把多余的空格去掉。我那个的意思是将BYTE元素转为int数值啊,没什么特别的。

温馨提示:答案为网友推荐,仅供参考
相似回答