社区
Delphi
帖子详情
字符串存储的是16进制小数怎么转为10进制小数
minipig520
2011-08-02 03:27:12
str := format('%x%x',[data[5],data[4]]);
data[5],data[4] 是串口发回的指令 前面表示高位 后面表示低位
比如str中现在存储的是‘526E’
我的想法是将字符一个一个取出来按数学方法计算再相加
怎么实现呢?
...全文
502
27
打赏
收藏
字符串存储的是16进制小数怎么转为10进制小数
str := format('%x%x',[data[5],data[4]]); data[5],data[4] 是串口发回的指令 前面表示高位 后面表示低位 比如str中现在存储的是‘526E’ 我的想法是将字符一个一个取出来按数学方法计算再相加 怎么实现呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
minipig520
2011-08-03
打赏
举报
回复
我最笨的算法是将526E一个一个取出来 先取5 5除以16等于0.3125 再取2 2除以16的平方得0.0078
取6 6除以16的三次方 得0.0015 取E转换成十进制的14 14除以16的四次方 得0.0002 再把得到的这四个数相加 得到0.322 0.322*2=0.644显示在EDIT中
minipig520
2011-08-02
打赏
举报
回复
我写的是光机测试程序 它的协议意思就是EDIT里面输入X Y的值除以2再发送出去 光机收到后再返回16字节的16进制数 4到7字节是XY坐标值 4 6分别是XY是低位 5 7是高位
PWORD(@data[4]^) 但这样是低位在前 高位在后运算出来应该是有问题的 算的时候应该是data[5]在前data[4]在后 所以用PWORD应该不行
阿发伯
2011-08-02
打赏
举报
回复
[Quote=引用 23 楼 minipig520 的回复:]
非常感谢您的耐心!! 我再查查是什么问题 我输入的XY坐标是0.644 0.338 都是除以2后再发送出去的 我只插了个USB转串口线 收到再转回来的应该是0.322 0.169(没乘以2)
[/Quote]
0.644 0.338 0.322 0.169都是浮点数,最少要占4字节,你用2字节发浮点数,怎么还可能还原?
阿发伯
2011-08-02
打赏
举报
回复
把你的计算公式列出来,我给你用代码实现
minipig520
2011-08-02
打赏
举报
回复
非常感谢您的耐心!! 我再查查是什么问题 我输入的XY坐标是0.644 0.338 都是除以2后再发送出去的 我只插了个USB转串口线 收到再转回来的应该是0.322 0.169(没乘以2)
minipig520
2011-08-02
打赏
举报
回复
526E这两个字节 如果是一个字一个字取出来像做数学题那样计算是正确的0.322 我想的是最笨的办法
比如先取5 除以16 再取2除以16的平方。。。再依次相加 但代码中不知道怎样取 并且最后取出E又如何算
阿发伯
2011-08-02
打赏
举报
回复
PWord是双字节指针类型,将data[4]的地址赋予它后取值,就已经包含了data[5]的值。
$526e转换为十进制本就是21102,加上0.,自然是0.21102,怎么会是0.322
minipig520
2011-08-02
打赏
举报
回复
您的意思是不是很懂 str1 := '0.' + inttostr(PWord(@data[4])^);就已经包含了data[4]和data[5]2个字节内容 这怎么包含了两个字节的内容呢 这样算出来是0.212吧好像
您是说把高字节和低字节先拼在一起再算吗?
阿发伯
2011-08-02
打赏
举报
回复
[Quote=引用 18 楼 minipig520 的回复:]
str1 := '0.' + inttostr(PWord(@data[4])^);
str2 := '0.' + inttostr(PWord(@data[5])^);
edit11.Text := floattostr(strtofloat(str1)+strtofloat(str2));
这样算出来的好像有出入 正确值应该是0.322 这样算出来的是0.383
[/Quote]
怎么能向你这样将低位字节和高位字节相加?str1 := '0.' + inttostr(PWord(@data[4])^);就已经包含了data[4]和data[5]2个字节内容,没必要再相加
minipig520
2011-08-02
打赏
举报
回复
str1 := '0.' + inttostr(PWord(@data[4])^);
str2 := '0.' + inttostr(PWord(@data[5])^);
edit11.Text := floattostr(strtofloat(str1)+strtofloat(str2));
这样算出来的好像有出入 正确值应该是0.322 这样算出来的是0.383
minipig520
2011-08-02
打赏
举报
回复
因为我是初学delphi 能不能拜您为师呀...
minipig520
2011-08-02
打赏
举报
回复
有高位和低位之分 不就直接把高位忽略了?
阿发伯
2011-08-02
打赏
举报
回复
那没必要转换为浮点数,直接转换为字符串就行了:
xEdit.text := '0.' + IntToStr(PWord(@data[4])^);
yEdit.text := '0.' + IntToStr(PWord(@data[6])^);
minipig520
2011-08-02
打赏
举报
回复
没有 别的没问题呀 是这样的 data[4]X坐标的低位 data[5]X坐标高位 data[6]Y坐标低位 data[7]
Y坐标高位 我是想把X Y的值 在两EDIT中显示出来
阿发伯
2011-08-02
打赏
举报
回复
Delphi库文件坏了???
minipig520
2011-08-02
打赏
举报
回复
COM3 Write(hex): 16(Bytes)57 00 12 00 6E 52 43 2B 00 40 00 00 00 00 00 80
COM3 Read(hex): 16(Bytes) 57 00 12 00 6E 52 43 2B 00 40 00 00 00 00 00 80
6E 52 43 2B就是data4到7的数据 收到的不是0哦 我也搞不清楚为什么V值会是0 觉得很奇怪
阿发伯
2011-08-02
打赏
举报
回复
[Quote=引用 9 楼 minipig520 的回复:]
我在内存中查看data[4]中存储的是110
[/Quote]
110就是十六进制$6e
阿发伯
2011-08-02
打赏
举报
回复
怎么可能是0,这段代码运行结果为0.21102。除非你接收的字节本就为0。
minipig520
2011-08-02
打赏
举报
回复
我在内存中查看data[4]中存储的是110
minipig520
2011-08-02
打赏
举报
回复
[Quote=引用 7 楼 maozefa 的回复:]
其实,你先将整形字节转换为字符串是多此一举,可直接转换的,如:
Delphi(Pascal) code
var
data: array[0..7] of byte;
v: double;
begin
data[4] := $6e; // 模拟串口发回数字
data[5] := $52;
v := StrToFloat('0.' + IntToStr(P……
[/Quote] 我搞不清楚为什么我这样写的话V的值会是0
加载更多回复(7)
两种方法实现:labview中4位
16进制
字符串
转
10进制
小数
符合IEEE754标准。 可以将4位
16进制
字符串
转
10进制
小数
。 如3ED80000
转为
0.421875。
pb
字符串
转十六进制及各进制之间转换源码
在IT行业中,
字符串
转换进制是一项基础且重要的任务,尤其在编程领域。PowerBuilder作为一款老牌的客户端/服务器应用程序开发工具,提供了丰富的功能,包括
字符串
处理和数据类型转换。本篇将详细介绍如何在Power...
易语言
小数
转十六进制
2. **内部处理**:易语言会将十进制
小数
先转换为二进制浮点数,然后将二进制浮点数转换为十六进制
字符串
。这个过程涉及到浮点数的二进制表示,即IEEE 754标准,包括符号位、指数部分和尾数部分。 3. **格式化输出**...
16进制
浮点数转换为
10进制
VC代码
在计算机科学中,数据通常以不同的格式
存储
,其中
16进制
和
10进制
是两种常见的表示方式。
16进制
(Hexadecimal)是一种基于16个符号(0-9,A-F)的计数系统,而
10进制
是我们日常生活中的计数方式。在处理浮点数时,...
十六进制
字符串
到浮点数,整型的相互转换源代码(qt+vc2010)
十六进制
字符串
转换为浮点数相对复杂,因为浮点数在计算机内部是以二进制的科学记数法
存储
的,涉及到浮点数的表示标准,如IEEE 754。我们可以先将十六进制
字符串
转换为整型,然后通过浮点数的二进制表示来完成转换:...
Delphi
5,930
社区成员
262,937
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章