在C++中,如何把字节数组转换成字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++中,如何把字节数组转换成字符串相关的知识,希望对你有一定的参考价值。
字节数组转化为字符串数组只需要做一个判断:检查字节数组最后一个字节是否为0,如果是,则直接复制。否则则需要追加一个为0的字节到末位。示例代码如下:
char* toString(char* data,size_t len,char* str,size_t strLen)//注意strLen>len否则函数结果不可知
if(data[len-1]==0)
strcpy(str,data);
else
memcpy(str,data,len);
str[len]=0;
return str;
参考技术A 在这个数组的最后加一个字节'\0'就变成了char字符串。如果原数组的大小最后没有空位,那就得另声明一个大一点的char数组,然后在最后加一个'\0'。如果是要转换成string型字符串,那如下就行了:
char a[20]='1','s','o';
for(int i=0;i<n;i++)//n是原字符串的长度
string str+=a[i];
这样就把原来的字符数组a里的元素转换成string型字符串str了……追问
我下节课试试着好吧
参考技术B 可以用forchar a[100];
String str;
for(int i=0;i<n;i++)
str[i]=a[i]; 参考技术C char array[]="qwertyuiop";
string str(array); 参考技术D DataIn是BYTE型数组
CString str = CString(DataIn)
C 字节数组转换成字符串
Java和C语言的串口通信中,Java把字符串:"we have 3 apples"转换成bytes数组发送。C语言接收到bytes数组,存在 *buf里。如何把*buf 中的字节数组转换成原先的字符串:"we have 3 apples", 然后存在*a 这个数组中?
*buf里存的是将we have 3 apples转换成ASCII码,然后再转换成2进制数的数组。strcpy可以直接将二进制数转换成字符么?
另外,定义字符串默认都是按照asc或者gb2312来存储的,这种编码都对单字节进行操作。如果是unicode,那么这就需要转换了,这时候再使用strcpy就会出问题。 参考技术B 什么东西,那些不是十六进制数吗?怎么个对应法则?两个字符转换成一个十六进制数?
你就看相应的大写字母乘以16和相应的十六进制数差几嘛,减掉再加上相应的数字,存到数组中去,输出的时候再按十六进制输出就好啦,哎,或者直接strcat()更安逸,又或者用sprintf()貌似也行 参考技术C 转换成字节发送……什么语言可以不用流发送字符串?
存在buf里buf就是你要的字符串!你去printf("[%s]\n",buf);看看吧,也许后面没有结尾,不过是小问题。 参考技术D byte 是 unsigned char.
unsigned char buf[]="we have 3 apples";
char a[50];
strcpy(a,buf);
printf("%s\n",a); 第5个回答 2010-08-21 char s[25];
CString str;
sprintf(str,"%s",s);
用sprintf可以进行转化!!
以上是关于在C++中,如何把字节数组转换成字符串的主要内容,如果未能解决你的问题,请参考以下文章