MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1173|回复: 4|关注: 0

[已解决] MATLAB怎么实现浮点数到16进制的转换(float)?

[复制链接]

新手

25 麦片

财富积分


050


64

主题

197

帖子

0

最佳答案
QQ
  • 关注者: 2
MATLAB怎么实现浮点数到16进制的转换(float)? 比如10.5我想转换为相应16进制float类型,转换后应该是有4个字节共32位,16位到浮点数转换可以用a = '45438971'b = typecast(uint32(hex2dec(a)),'single')实现,想问下反过来怎么操作?

论坛优秀回答者

7

主题

1334

帖子

319

最佳答案
  • 关注者: 49
发表于 2017-11-20 20:49:10 | 显示全部楼层 |此回复为最佳答案
  1. a = '45438971'
  2. b = typecast(uint32(hex2dec(a)),'single')

  3. sprintf('%tx',single(b))
复制代码
多看帮助文档
说明你的matlab版本

新手

25 麦片

财富积分


050


64

主题

197

帖子

0

最佳答案
QQ
  • 关注者: 2
 楼主| 发表于 2017-11-21 11:00:30 | 显示全部楼层

sprintf('%tx',single(b))。。。。好简洁的方法,昨晚弄了一晚虽然也能解决,没有楼主的这个简洁万分感谢

新手

25 麦片

财富积分


050


64

主题

197

帖子

0

最佳答案
QQ
  • 关注者: 2
 楼主| 发表于 2017-11-21 11:12:11 | 显示全部楼层

还想请教一个问题 比如1.0用MATLAB转换为十六进制为3F800000 但是我们用那种浮点转十六进制软件转换却正好反过来了为00 00 80 3F 想问下为什么会这样?modsim里面通信就是发送为00 00 80 3F?想问下原因不然处理起来还是有点麻烦

论坛优秀回答者

7

主题

1334

帖子

319

最佳答案
  • 关注者: 49
发表于 2017-11-23 11:11:25 | 显示全部楼层
qq405075550 发表于 2017-11-21 11:12
还想请教一个问题 比如1.0用MATLAB转换为十六进制为3F800000 但是我们用那种浮点转十六进制软件转换却正 ...

就是single的四个字节写的顺序不一样吧。matlab左边是高位,你说的软件左边是低位。他们表示浮点数的方式还是一样的。
多看帮助文档
说明你的matlab版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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