最近在一个已有的软件项目中加一个小功能。根据通信协议,本项目中的通信数据需要使用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进制形式为

const char* pConstChar = charData; //将这个数组赋值给常量字符串指针
int len = strlen(pConstChar ); //获取其长度

此时,常量字符串指针pConstChar 指向的数据就只有3个字节了,但其实我的数据里的有效数据有6个字节,0x01,0x02, 0x03, 0x00, 0x01,0x08。也就是说,我的第4个数据0x00被当作常量字符串的结束字符'0'了,有没有什么办法,能识别出数据中间有效的 0x00 啊?
PS:请不要质问我为什么一定要用char型数组保存我的数据,也不要质问我为什么一定要用常量字符串指针接收数据,身在项目框架之中,给我的只有接口,还是菜鸟一只,也还没有能力重写别人的接口函数,只能曲线救国了,呜~~~
谁能解答一下我的困惑,给点可能的思路也行,拜托各位大侠~~~
博主在软件项目中遇到16进制数据存储的问题,使用char数组存储包含0x00在内的16进制数据时,0x00被误识别为字符串结束符。寻求解决方案,希望能在数据中正确识别并保留0x00。
1608

被折叠的 条评论
为什么被折叠?



