如何把有个16进字符保存到String中
DEFINE TEST 0x1E
String str = TEST ;
DEBUG看的时候,怎么str被转成"30"了?
但如果用char buf[1024];
buf[0] = TEST ;
就正常?
[解决办法]
0x33 0x30 就是ASCII
33 是3的ASCII码
30 是0的ASCII码
这样也没有错 也是十进制30 也是十六禁止的 0x1E
你要用socket通讯,你最好用byte去发送接收
这样保持数据格式一致
[解决办法]
首先你定义这一行以后
DEFINE TEST 0x1E
TEST的值就是0x1E了,换成10进制就是30
String str = TEST;
这一句定义了一个String变量并赋值,其实相当于
String str = String(TEST)
也就相当于
String str = IntToStr(TEST)
所以,执行以后,str的值就是字符串"30",长度是2,内存中排列的数据是:0x33 0x30
而下面这两行代码:
char buf[1024];
buf[0] = TEST;
效果和上面那一行就差别大了,这是将0x1E这个字节直接填充到buf数据的第一个成员中,所以在调试查看时,buf的第一个值就是0x1E,换成10进制就是30
如果想用String,又想让其储存的是0x1E的字节,可以这样:
String str = char(TEST);