如果把"3333333333333308"两位两位分割放入unsigned char中
有这样一段字符串3333333333333308,其实已经是两位两位十六进制了,我现在要两位两位切割放到unsigned char中,该如何做啊
unsigned char SendData[64];
memset(SendData,0,sizeof(SendData));
AnsiString epctest = "3333333333333308";
需要实现最终的结果为:
SendData[0] = ox33
SendData[1] = ox33
SendData[2] = ox33
SendData[3] = ox33
SendData[4] = ox33
SendData[5] = ox33
SendData[6] = ox33
SendData[7] = ox08
请问该如何实现啊
[解决办法]
#include <stdio.h>
bool __stdcall HexToByte(LPCSTR lpInText, LPBYTE lpOutBuf, DWORD dwBufSize)
{
DWORD dwOutByte = 0;
size_t uInByte = strlen(lpInText);
if (uInByte < 2) return false;
BYTE c;
for (size_t i = 0; i < uInByte; i += 2)
{
if (dwOutByte < dwBufSize)
{
c = lpInText[i];
if (c >= '0' && c <= '9') lpOutBuf[dwOutByte] = (c - '0') << 4;
else if (c >= 'A' && c <= 'F') lpOutBuf[dwOutByte] = (c - 'A' + 10) << 4;
c = lpInText[i + 1];
if (c >= '0' && c <= '9') lpOutBuf[dwOutByte++]
[解决办法]
= (c - '0');
else if (c >= 'A' && c <= 'F') lpOutBuf[dwOutByte++]
[解决办法]
= (c - 'A' + 10);
}
}
return true;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned char SendData[64];
memset(SendData, 0, sizeof(SendData));
AnsiString epctest = "3333333333333308";
HexToByte(epctest.c_str(), SendData, 64);
// ...
}