最近在一个已有的软件项目中加一个小功能。根据通信协议,本项目中的通信数据需要使用16进制的数据来保存,并将数据保存在char型数组中,比如
char charData[10]; //声明一个char型数组
memset(&charData[0],0x00,10*sizeof(char)); //数据清零,不必要,只是我看得舒服
charData[0] = 0x01; //假设存入数据
charData[1] = 0x02;
charData[2] = 0x03;
charData[3] = 0x00;
charData[4] = 0x01;
charData[5] = 0x08;
此时,数组charData中的数据的16进制形式为
![5fb80933ddbe46f98495c5f50ea4b9f4.png](https://i-blog.csdnimg.cn/blog_migrate/ba3c95d277f7f610bd39cffe770010b8.jpeg)
const char* pConstChar = charData; //将这个数组赋值给常量字符串指针
int len = strlen(pConstChar ); //获取其长度
![1ae7a5dd7f5c2c44aebea89bbd2fc599.png](https://i-blog.csdnimg.cn/blog_migrate/7aaa6f71cc0e74189035825278705b7c.png)
此时,常量字符串指针pConstChar 指向的数据就只有3个字节了,但其实我的数据里的有效数据有6个字节,0x01,0x02, 0x03, 0x00, 0x01,0x08。也就是说,我的第4个数据0x00被当作常量字符串的结束字符'0'了,有没有什么办法,能识别出数据中间有效的 0x00 啊?
PS:请不要质问我为什么一定要用char型数组保存我的数据,也不要质问我为什么一定要用常量字符串指针接收数据,身在项目框架之中,给我的只有接口,还是菜鸟一只,也还没有能力重写别人的接口函数,只能曲线救国了,呜~~~
谁能解答一下我的困惑,给点可能的思路也行,拜托各位大侠~~~