专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

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

发布时间:2011-06-28 14:02:26 文章来源:www.iduyao.cn 采编人员:星星草
如何把有个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);


友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: