社区
Delphi
帖子详情
字符串存储的是16进制小数怎么转为10进制小数
minipig520
2011-08-02 03:27:12
str := format('%x%x',[data[5],data[4]]);
data[5],data[4] 是串口发回的指令 前面表示高位 后面表示低位
比如str中现在存储的是‘526E’
我的想法是将字符一个一个取出来按数学方法计算再相加
怎么实现呢?
...全文
494
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。
易语言
小数
转十六进制
2. **内部处理**:易语言会将十进制
小数
先转换为二进制浮点数,然后将二进制浮点数转换为十六进制
字符串
。这个过程涉及到浮点数的二进制表示,即IEEE 754标准,包括符号位、指数部分和尾数部分。 3. **格式化输出**...
16进制
浮点数转换为
10进制
VC代码
在计算机科学中,数据通常以不同的格式
存储
,其中
16进制
和
10进制
是两种常见的表示方式。
16进制
(Hexadecimal)是一种基于16个符号(0-9,A-F)的计数系统,而
10进制
是我们日常生活中的计数方式。在处理浮点数时,...
十六进制
字符串
到浮点数,整型的相互转换源代码(qt+vc2010)
十六进制
字符串
转换为浮点数相对复杂,因为浮点数在计算机内部是以二进制的科学记数法
存储
的,涉及到浮点数的表示标准,如IEEE 754。我们可以先将十六进制
字符串
转换为整型,然后通过浮点数的二进制表示来完成转换:...
浮点数转换工具 十六进制浮点数 与 十进制
小数
相互转化查询
4. **转换过程**:从十六进制浮点数转换到十进制
小数
,首先需要解析十六进制
字符串
,然后按照IEEE 754的规则解码指数和尾数,最后进行计算得到十进制值。反之,从十进制
小数
转换到十六进制浮点数,则需先将十进制数...
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章