首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

如果把"3333333333333308"两位两位瓜分放入unsigned char中

2013-08-01 
如果把3333333333333308两位两位分割放入unsigned char中有这样一段字符串3333333333333308,其实已经是

如果把"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);

    // ...
}

热点排行