char数组赋值_char型数据中存放的0x00转为const char*被当作结束字符'\0'

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

const char* pConstChar = charData; //将这个数组赋值给常量字符串指针

int len = strlen(pConstChar ); //获取其长度

1ae7a5dd7f5c2c44aebea89bbd2fc599.png

此时,常量字符串指针pConstChar 指向的数据就只有3个字节了,但其实我的数据里的有效数据有6个字节,0x01,0x02, 0x03, 0x00, 0x01,0x08。也就是说,我的第4个数据0x00被当作常量字符串的结束字符'0'了,有没有什么办法,能识别出数据中间有效的 0x00 啊?

PS:请不要质问我为什么一定要用char型数组保存我的数据,也不要质问我为什么一定要用常量字符串指针接收数据,身在项目框架之中,给我的只有接口,还是菜鸟一只,也还没有能力重写别人的接口函数,只能曲线救国了,呜~~~

谁能解答一下我的困惑,给点可能的思路也行,拜托各位大侠~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值