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

怎么把一串字符的16进制形式变成字符串

2013-08-10 
如何把一串字符的16进制形式变成字符串如何把一个字符型数组,8个字节,变成一个16字节的字符串?例如16进制

如何把一串字符的16进制形式变成字符串
如何把一个字符型数组,8个字节,变成一个16字节的字符串?
例如16进制存储为0x94,0x00,0xAB,0x19,0x48,x00,0x00,0x0F
转成字串就是"9400AB194800000F"
求高手
存储
[解决办法]

const std::string CFunc_Util::ToHex(const char *strin,int len)
{
if(strin == 0 
[解决办法]
 len <= 0) return "";

std::string retstr = "";
for (int i = 0; i < len; i++)
{
char szout[3] = {0};
sprintf(szout, "%02X", (unsigned char)strin[i]);
retstr += szout;
}
return retstr;
}
[解决办法]

char hex[8]={0x94,0x00,0xAB,0x19,0x48,x00,0x00,0x0F};
char str[17];
for (i=0;i<8;i++) sprintf(str+i*2,"%02X",(unsigned char)hex[i]);
printf("%s\n",str);

[解决办法]

字符串 操作
首先 写入一个中如下的字符串 sprintf函数
0x940x000xAB0x190x48x000x000x0F

然后删掉其中的子串"0x" ,这个自己写一个接口处理下,很简单!


[解决办法]
// Decode a Hex string.
string decodeHex(const byte* src, long srcSize)
{
//    00000030h: 00 01 02 03 04 05 06 07 08 09 10 10 10 10 10 10 ;
//    00000040h: 10 0D 0A 0B 0C 0D 0E 0F 10 10 10 10 10 10 10 10 ;
//    00000050h: 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ;
//    00000060h: 10 10 0D 0A 0B 0C 0D 0E 0F 10 10 10 10 10 10 10 ;
    // create decoding table
    byte invalid = 16;


    byte decodeHexTable[256];
    for (long i = 0; i < 256; i++) decodeHexTable[i] = invalid;
    for (byte i = 0; i < 10; i++) decodeHexTable[static_cast<byte>('0') + i] = i;
    for (byte i = 0; i < 6; i++) decodeHexTable[static_cast<byte>('A') + i] = i + 10;
    for (byte i = 0; i < 6; i++) decodeHexTable[static_cast<byte>('a') + i] = i + 10;

    // calculate dest size
    long validSrcSize = 0;
    for (long srcPos = 0; srcPos < srcSize; srcPos++) {
        if (decodeHexTable[src[srcPos]] != invalid) validSrcSize++;
    }
    const long destSize = validSrcSize / 2;

    // allocate dest buffer
    string dest(destSize, '\0');

    // decode
    for (long srcPos = 0, destPos = 0; destPos < destSize; destPos++) {
        byte buffer = 0;
        for (int bufferPos = 1; bufferPos >= 0 && srcPos < srcSize; srcPos++) {
            byte srcValue = decodeHexTable[src[srcPos]];
            if (srcValue == invalid) continue;
            buffer 
[解决办法]
= srcValue << (bufferPos * 4);
            bufferPos--;
        }
        dest[destPos] = buffer;
    }

    return dest;
}



如果你的 要求, 反一下方向,用这个函数道是可以的

热点排行