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

新手关于数组和指针的有关问题

2012-03-08 
新手求教:关于数组和指针的问题。小弟想请教下大家:我现在有一组UCHAR的数组tempstr[]里面存着一些0X0A,0XF

新手求教:关于数组和指针的问题。
小弟想请教下大家: 我现在有一组UCHAR的数组tempstr[]里面存着一些 0X0A,0XFF,0X00,0X0B.这样的十六进制的数据。
我想把这些数据转化成0x30,0x41,0x46,0x46,0x30,0x30,0x30,0x42.这样数据。
void CTestDlg::CharToHEX(char *indata, char *outdata, int len)
{
int n = 0;
for (n = 0; n < len; n++)
{
switch(indata[n] >> 4)
{
case 0x00:outdata[n*2-1] = 0x30; break;
case 0x01:outdata[n*2-1] = 0x31; break;
case 0x02:outdata[n*2-1] = 0x32; break;
case 0x03:outdata[n*2-1] = 0x33; break;
case 0x04:outdata[n*2-1] = 0x34; break;
case 0x05:outdata[n*2-1] = 0x35; break;
case 0x06:outdata[n*2-1] = 0x36; break;
case 0x07:outdata[n*2-1] = 0x37; break;
case 0x08:outdata[n*2-1] = 0x38; break;
case 0x09:outdata[n*2-1] = 0x39; break;
case 0x0a:outdata[n*2-1] = 0x41; break;
case 0x0b:outdata[n*2-1] = 0x42; break;
case 0x0c:outdata[n*2-1] = 0x43; break;
case 0x0d:outdata[n*2-1] = 0x44; break;
case 0x0e:outdata[n*2-1] = 0x45; break;
case 0x0f:outdata[n*2-1] = 0x46; break;
}
switch(indata[n] & 0x0f)
{
case 0x00:outdata[n*2] = 0x30; break;
case 0x01:outdata[n*2] = 0x31; break;
case 0x02:outdata[n*2] = 0x32; break;
case 0x03:outdata[n*2] = 0x33; break;
case 0x04:outdata[n*2] = 0x34; break;
case 0x05:outdata[n*2] = 0x35; break;
case 0x06:outdata[n*2] = 0x36; break;
case 0x07:outdata[n*2] = 0x37; break;
case 0x08:outdata[n*2] = 0x38; break;
case 0x09:outdata[n*2] = 0x39; break;
case 0x0a:outdata[n*2] = 0x41; break;
case 0x0b:outdata[n*2] = 0x42; break;
case 0x0c:outdata[n*2] = 0x43; break;
case 0x0d:outdata[n*2] = 0x44; break;
case 0x0e:outdata[n*2] = 0x45; break;
case 0x0f:outdata[n*2] = 0x46; break;
}
}
}


编译都没错! 但是执行的时候他提示内存不可读和内存不可写。是什么意思啊? 这种传递指针的方式不行吗? 谢谢指教!

[解决办法]
估计你的数组长度为len吧,n=len-1时,n*2就越界了
[解决办法]
用map映射

热点排行