...转换成16进制BYTE字符数组,例如"123"转换成BYTE a[]={0x31,0x32...
发布网友
发布时间:2024-10-16 08:23
我来回答
共1个回答
热心网友
时间:2024-11-15 06:52
我这个是将字符串里的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;
}