在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 可以用for
char 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可以直接将二进制数转换成字符么?

参考技术A 你说的bytes数组是指的什么?仍然是asc编码吗?如果是这样,那你后面是可以用strcpy的。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++中,如何把字节数组转换成字符串的主要内容,如果未能解决你的问题,请参考以下文章

C 字节数组转换成字符串

在java中如何把字节数组存储到数据库?

如何把一个byte数组的数字转换成int

如何将base64位的字节数组转换成图片并显示

java和c#的字节数组转换问题

如何在 C++ 中将字节数组转换为十六进制字符串?