现在我要将一个char a[800]的数组中的数据转换为连续的以0x开始的字符串请问有什么最快的方法.
如:
a[0]=0xAB
a[1]=0xF1
a[2]=0xD3
a[3]=0x22
.
.
.
a[799]=0x98转换为"0xABF1D322........98"这样的字符串.
如:
a[0]=0xAB
a[1]=0xF1
a[2]=0xD3
a[3]=0x22
.
.
.
a[799]=0x98转换为"0xABF1D322........98"这样的字符串.
解决方案 »
- 数据处理的一个算法与数据结构设计问题请教
- 请问有没有《Visualc++高级界面特效制作百例》这本书的教程?
- 关于波浪形控件怎么做呢?
- OnHScroll反复进入问题
- 解释下这个.
- SearchTreeForFile("我的电脑:\\","123.exe",p); 能一次性查找所有磁盘吗??
- 如何给activeX控件添加滚动条?mfc向导生成的
- 超级恶心的问题,望高手指教..............
- 在一个对话框的按钮上单击,探出另外一个对话框,使得新的对话框的位置正好在原来对话框的上面,应该怎么做呢?
- 巨菜问题,很容易得分:)
- 我一个以前编译通过的工程,一切正常,现在重新打开,编译通过,可就无法链接到我以前设置的mouse光标的
- 不明白,硬是不明白!
CString strTemp;
for (int i = 0; i < 800; i++)
{
strTemp.Format(_T("%x"), a[i]);
strResult += strTemp;
}
char szTemp[2];
for (int i = 0; i < 800; i++)
{
sprintf(szTemp, "%x", a[i]);
szResult[2 + i * 2] = szTemp[0];
szResult[2 + i * 2 + 1] = szTemp[1];
}这个比较好
char szTemp[2 + 1];
for (int i = 0; i < 800; i++)
{
sprintf(szTemp, "%x", a[i]);
szResult[2 + i * 2] = szTemp[0];
szResult[2 + i * 2 + 1] = szTemp[1];
}szResult[800 * 2 + 2] = '\0';
*pDectByteArray++='x';
for(int i=0;i<800;i++)
{
if(( Temp=*pSourceByteArray/16 ) < 10) *pDectByteArray=Temp+0x30;
else *pDectByteArray++ = Temp - 0x0a + 'A'; if(( Temp=*pSourceByteArray%16 ) < 10) *pDectByteArray=Temp+0x30;
else *pDectByteArray++ = Temp - 0x0a + 'A';
pSourceByteArray++;
}
*pDectByteArray = '\0';
*pDectByteArray++='0';
*pDectByteArray++='x';
for(int i=0;i<800;i++)
{
if(( Temp=*pSourceByteArray/16 ) < 10) *pDectByteArray++=Temp+0x30;
else *pDectByteArray++ = Temp - 0x0a + 'A'; if(( Temp=*pSourceByteArray%16 ) < 10) *pDectByteArray++=Temp+0x30;
else *pDectByteArray++ = Temp - 0x0a + 'A';
pSourceByteArray++;
}
*pDectByteArray = '\0';
BYTE h;
for (int i=0; i<800; i++) {
h = hex[(BYTE)a[i] >> 4];
cout << h;
h = hex[(BYTE)a[i] & 0xf];
cout << h;
}
const unsigned short FindTable[256] = {0x3030,0x3130,0x3230,0x3330,0x3430........0XFEFF,0xFFFF};
//这里省略掉,共256个.注意要转换的字节低位对应高8位,高位对应低8位,如0x01就对应0x3130,这样取出才可正确存放数组中.还有,这个表要建起也挺劲,最好编程序然后打出来.void Convert(unsigned short *pDect,unsigned char *pSource,int nLength)
{
for (int i=0; i<nLength; i++)
*pDect++ = FindTable[*pSource++];
*pDect=0x0000;//虽然最后放多了一个0x00,但应该不碍.
}
//这里省略掉,共256个.注意要转换的字节低位对应高8位,高位对应低8位,如0x01就对应0x3130,这样取出才可正确存放数组中.还有,这个表要建起也挺劲,最好编程序然后打出来.void Convert(unsigned short *pDect,unsigned char *pSource,int nLength)
{
for (int i=0; i<nLength; i++)
*pDect++ = FindTable[*pSource++];
*pDect=0x0000;//虽然最后放多了一个0x00,但应该不碍.
}
{
static char hex[]="0123456789ABCDEF\0\0";
static unsigned char h,l; *pOut++ = '0';
*pOut++ = 'x';
while( arrSize-- )
{
l = (unsigned char)*src & 0x0F;
h = (unsigned char)*src++;
*pOut++ = hex[h>>4];
*pOut++ = hex[l];
}
*pOut++ = '0';
*pOut++ = '0';
*pOut++ = '\0';
}