开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1741|回复: 6
收起左侧

[求助] 数据double类型转换

[复制链接]
结帖率:100% (13/13)
发表于 2022-5-25 17:36:36 | 显示全部楼层 |阅读模式   福建省龙岩市
16进制hex不知道是具体哪个转换得到这样的结果
16进制=>double

b0000003=>0.003

c1da2928=>3107.46
c0003e84=>1.6004





结帖率:100% (13/13)
 楼主| 发表于 2022-5-25 17:53:17 | 显示全部楼层   福建省龙岩市
[Asm] 纯文本查看 复制代码
00000001007d5d43         mov        rbp, rsp
00000001007d5d46         mov        eax, dword [rdi]
00000001007d5d48         mov        ecx, 0x80000000
00000001007d5d4d         cmp        rax, rcx
00000001007d5d50         jne        loc_1007d5d5c

00000001007d5d52         movsd      xmm0, qword [double_value_2_14748E09]       ; double_value_2_14748E09
00000001007d5d5a         jmp        loc_1007d5d9b

                     loc_1007d5d5c:
00000001007d5d5c         mov        ecx, eax                                    ; CODE XREF=sub_1007d5d42+14
00000001007d5d5e         mov        rdx, rax
00000001007d5d61         shr        rdx, 0x19
00000001007d5d65         and        edx, 0x38
00000001007d5d68         lea        rsi, qword [double_value_1_34218E08+8]      ; 0x1010da1b0
00000001007d5d6f         cvtsi2sd   xmm1, qword [rdx+rsi]
00000001007d5d75         and        ecx, 0x7ffffff
00000001007d5d7b         cvtsi2sd   xmm0, ecx
00000001007d5d7f         test       eax, eax
00000001007d5d81         js         loc_1007d5d89

00000001007d5d83         mulsd      xmm0, xmm1
00000001007d5d87         jmp        loc_1007d5d8d

                     loc_1007d5d89:
00000001007d5d89         divsd      xmm0, xmm1                                  ; CODE XREF=sub_1007d5d42+63

                     loc_1007d5d8d:
00000001007d5d8d         bt         eax, 0x1b                                   ; CODE XREF=sub_1007d5d42+69
00000001007d5d91         jae        loc_1007d5d9b

00000001007d5d93         xorpd      xmm0, xmmword [double_value_14+16]          ; 0x1010ce030

                     loc_1007d5d9b:
00000001007d5d9b         pop        rbp                                         ; CODE XREF=sub_1007d5d42+24, sub_1007d5d42+79
00000001007d5d9c         ret
                        ; endp

不知道是哪个函数转换
好像具体思路

c1da2928(hex)=>40A846EB851EB852(hex)=>3107.46 (得到上步数据就可以直接转double了)
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2022-5-25 17:59:14 | 显示全部楼层   福建省龙岩市
[Asm] 纯文本查看 复制代码
00000001007d5d43         mov        rbp, rsp
00000001007d5d46         mov        eax, dword [rdi]
00000001007d5d48         mov        ecx, 0x80000000
00000001007d5d4d         cmp        rax, rcx
00000001007d5d50         jne        loc_1007d5d5c

00000001007d5d52         movsd      xmm0, qword [double_value_2_14748E09]       ; double_value_2_14748E09
00000001007d5d5a         jmp        loc_1007d5d9b

                     loc_1007d5d5c:
00000001007d5d5c         mov        ecx, eax                                    ; CODE XREF=sub_1007d5d42+14
00000001007d5d5e         mov        rdx, rax
00000001007d5d61         shr        rdx, 0x19
00000001007d5d65         and        edx, 0x38
00000001007d5d68         lea        rsi, qword [double_value_1_34218E08+8]      ; 0x1010da1b0
00000001007d5d6f         cvtsi2sd   xmm1, qword [rdx+rsi]
00000001007d5d75         and        ecx, 0x7ffffff
00000001007d5d7b         cvtsi2sd   xmm0, ecx
00000001007d5d7f         test       eax, eax
00000001007d5d81         js         loc_1007d5d89

00000001007d5d83         mulsd      xmm0, xmm1
00000001007d5d87         jmp        loc_1007d5d8d

                     loc_1007d5d89:
00000001007d5d89         divsd      xmm0, xmm1                                  ; CODE XREF=sub_1007d5d42+63

                     loc_1007d5d8d:
00000001007d5d8d         bt         eax, 0x1b                                   ; CODE XREF=sub_1007d5d42+69
00000001007d5d91         jae        loc_1007d5d9b

00000001007d5d93         xorpd      xmm0, xmmword [double_value_14+16]          ; 0x1010ce030

                     loc_1007d5d9b:
00000001007d5d9b         pop        rbp                                         ; CODE XREF=sub_1007d5d42+24, sub_1007d5d42+79
00000001007d5d9c         ret
                        ; endp


看到汇编好像是
c1da2928=>40A846EB851EB852=>3107.46
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2022-5-25 18:28:12 | 显示全部楼层   福建省龙岩市
IDA看到的流程图
截屏2022-05-25 18.26.58.png
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 20 天

发表于 2022-5-25 18:32:01 | 显示全部楼层   广西壮族自治区崇左市
QQ截图20220525183045.png

3107.46, 这个双精度小数, 在内存里的数据就是 0x40A846EB851EB852
仅此而已, 单精度的话只占用4个字节
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2022-5-26 00:38:30 | 显示全部楼层   福建省龙岩市
福仔 发表于 2022-5-25 18:32
3107.46, 这个双精度小数, 在内存里的数据就是 0x40A846EB851EB852
仅此而已, 单精度的话只占用4个字节 ...

40A846EB851EB852=>3107.46 这步知道
主要是 c1da2928=>40A846EB851EB852 这步不知道怎么变的
回复 支持 反对

使用道具 举报

结帖率:100% (13/13)
 楼主| 发表于 2022-5-27 22:47:40 | 显示全部楼层   福建省龙岩市
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表