标题:unsigned char* 如何获取size ?
作者:dafei2015
日期:2019-01-30 18:45
内容:
代码如下:
QByteArray To_Write_bytes;
To_Write_bytes[0]=0x01;
To_Write_bytes[1]=0x00;
To_Write_bytes[2]=0x03;
To_Write_bytes[3]=0x00;
To_Write_bytes[4]=0x00;
To_Write_bytes[5]=0x00;
To_Write_bytes[6]=0x02;
unsigned char *writtenbuffer= (unsigned char *)To_Write_bytes.data();
qDebug()
#1 [solo_wang 01-31 08:24]
这种char*类型数据,都是要你自己得知道size才可以的。sizeof(*p)返回的第一个元素的size,实际上就是sizeof(u_char);sizeof(p)是计算一个指针的大小,一般32位运行环境就是4;strlen(p)遇到'\0'就结束了,所以返回1。
#2 [gspite 01-31 09:14]
1楼正解
#3 [automoblie0 01-31 15:40]
填入16进制值,转换后貌似有的是结尾符有的是不可见字符。
尝试填个字符之类,如 QByteArray To_Write_bytes("hello,world!");
这样转换unsigned char *,观察一下内存应该有数据
#4 [automoblie0 01-31 15:41]
楼主想想。第一次你填入0x00。转换char*后是结尾符号。应该是啥都没有的。
#5 [dbzhang800 02-01 13:22]
在C/C++里面,这个东西怎么都不会返回7的
除非你是数组首地址(注意,不能让它退化为指针。比如你通过直接赋值或函数参数传递以指针方式到其他地方)
char bytes[]={'1','2','3','4','\0','\0','\0'};