hur.cn - 华软网

 热门搜索

C++ unsigned short数组转为char *

  作者:未知    来源:网络    更新时间:2011/3/29
       我用VS2005开发工具,写了个C++程序,需要将unsigned short数组内容转换为char *,望高手指导下……
---华软 网友回答---
unsigned short aa[10];
char* pdata = (char*)(&(aa[0]));
---华软网友回复---
(char *)强制转换,支持
---华软网友回复---
  非常感谢你的帮助,但是用printf("%s\n",pdata)打印出来的是乱码,貌似还是转的有问题……
---华软网友回复---
  我之前用的就是强转,就是因为有乱码,所以才来请教……
---华软网友回复---
那必然是有问题的,unsigned short与char内存布局不一样的撒!
---华软网友回复---
强制转换就可以啊.至于乱码,5楼说的很对
---华软网友回复---
如果强转过来有乱码的话,就不能用啊,如何转换,才能正常呢。
---华软网友回复---
   高人指点下……
---华软网友回复---
不强转那就只能一个个赋值。。
---华软网友回复---
引用楼主 crossfile 的回复:
我用VS2005开发工具,写了个C++程序,需要将unsigned short数组内容转换为char *,望高手指导下……


你的unsigned short 数组内是数字吧

然后你转成 char* 打印是%s ,就要按字符串格式打印吧..
肯定会有问题了啊
char a=65;%c打印是 A %d打印是 65

但是如果,a=10,那么%c打印会是什么呢?

如果你只是把打印出 ushort中的数字出来,建议直接用 %d循环一个一个打印,或者
%d 一个一个转成char*,然后再打印
---华软网友回复---
数据结构不一样,乱码正常
---华软网友回复---
因为本身就是乱码,比如你变量 为97,存在Char *里面输出的时候该变量显示的就是a了!这个建议你多看看基础的书籍
---华软网友回复---
我不仅仅是为了打印,我是需要转换,并返回。
---华软网友回复---
如下
short aaa[100];
char bbb[400];

memcpy(bbb,aaa,100*sizeof(short));
---华软网友回复---
我看你还是以数字形式打印出来,然后对着ascii码查吧

---华软网友回复---
那会死人的,获取的是GPS返回的数据。
---华软网友回复---
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "GPRMC1234";
unsigned short pdata[10] = {0};
memcpy_s(pdata, strlen(str), str, strlen(str));

printf("%s\r\n", str);
printf("%s\r\n", (char*)(pdata));
return 0;
}
这样打印出来不是乱码啊。。
莫非你收到的GPS数据是unicode编码的。。
---华软网友回复---
用sprintf(char *,format);
---华软网友回复---
unsigned short 是2个字节 char 是1个字节能直接转正确了不就出鬼了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。