hur.cn - 华软网

 热门搜索

请问如何快速把一个BYTE数组转换为字符串呢?

  作者:未知    来源:网络    更新时间:2011/4/15
BYTE b[6]={0x01,0x02,0x13,0x14,0x2A,0x2B};
转为为字符串
str="010213142A2B";

请问以上这样的情况怎么转换对照快呢?
---华软 网友回答---
string BYTEToHexString( BYTE i )
{
string result;
stringstream SS;
SS << std :: hex << i;
SS >> result;
return result;
}

string strHex;
for (int i = 0; i < 6; i++)
{
  if( b[i] < 16 )
strHex+= " 0" + BYTEToHexString( b[i] );
  else
strHex+= " " + BYTEToHexString( b[i] );
 }

就这样
---华软网友回复---
C++">	BYTE b[6]={0x01,0x02,0x13,0x14,0x2A,0x2B};

CString str;
CString tmp;
for(int i=0; i<sizeof(b)/sizeof(b[0]); i++)
{
tmp.Format(_T("%02X"), b[i]);
str += tmp;
}
AfxMessageBox(str);

---华软网友回复---
string类型没用过。。。现在运用的是2楼的代码,写的DLL给其余程序运用,运用进程中偶尔会出现这类情况,不知道是怎么回事

---华软网友回复---
直接用系统函数 Format() 来转换
---华软网友回复---
你需要用unsigned byte
---华软网友回复---
C++">   BYTE b[6]={0x01,0x02,0x13,0x14,0x2A,0x2B};
    
   TCHAR str[100]={0};
   TCHAR strtemp[20]={0};

    for(int i=0; i<sizeof(b)/sizeof(b[0]); i++)
    {
     
_stprintf(strtemp,_T("%02X"),b[i]);
        _tcscat(str,strtemp);
    }
    AfxMessageBox(str);


没用过CString,能够用stprintf
---华软网友回复---
_stprintf就好了


//**************************************
// HEX转16进制数
// 无空格
//**************************************
TCHAR *
h2s( unsigned char *hexdata, size_t length, TCHAR *strbuffer )
{
    size_t i;
    TCHAR *p;

    if( strbuffer )
    {
        *strbuffer = 0;
    }
    else
    {
        //如果传入一个空串,前往一个毛病信息
        return g____NULL_STRING;
    }

    try
    {
        p = strbuffer;
        for( i = 0; i < length; i++ )
        {
            _stprintf( p, _T( "%.2X" ), *hexdata );
            p += 2;
            hexdata++;
        }
        *p = 0;
    }

    catch( ... )
    {
        AfxMessageBox( _T( "h2s function error" ) );
    }

    return strbuffer;
}


     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。