首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么把有个16进字符保存到String中

2012-03-23 
如何把有个16进字符保存到String中DEFINE TEST 0x1EString str TEST DEBUG看的时候,怎么str被转成30

如何把有个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);


热点排行