0518jxf 发表于 2009-4-12 20:38:14

怎样把16进制字符串转为单精度浮点数

怎样把16进制字符串转为单精度浮点数
比如3CA3D70A=0.02
VI怎么实现

cpubbs 发表于 2009-4-12 21:19:15

3CA3D70A=0.02

这样单纯看这串数据很难判断关系!您这个是什么发过来的,要看一下它的指令形式如何,相当于如何才能解出来!

cpubbs 发表于 2009-4-12 21:20:46

如果仅仅是将16进制的字符串转为单精度的的话,用那种STRING里面的Hexadecimal String To Number,然后再运算!

cpubbs 发表于 2009-4-12 21:21:32

串口数据格式转换子程序汇集打包下载!
http://www.cpubbs.com/bbs/viewthread.php?tid=2219&fromuid=19

这是串口数据转换的一些常用的VI

炸弹熊 发表于 2010-1-18 14:37:50

最近也用到了IEEE754标准的数据转换,共享NI官方的例子

http://decibel.ni.com/content/docs/DOC-3554

wdyjz 发表于 2026-5-28 19:57:18

在 LabVIEW 中将四字节(32 位)数据转换为单精度浮点数(SGL),核心方法是使用“类型转换”(Type Cast)函数,确保输入为 U32 且输出设为 SGL(单精度浮点数),按 IEEE 754 标准解释字节。

- 若输入是 十六进制字符串(如 `"40490FDB"`):先用 “十六进制字符串至数值” 转为 U32,再用 “类型转换”(右键设输出为 SGL)得浮点数。
- 若输入是 字节数组(如从串口收到的 4 字节):可直接 “类型转换”(输入接 U8 数组,输出设为 SGL),但需注意字节序(大端/小端);若结果异常,插入 “交换字节” 函数(编程 → 数值 → 数据操作)。
- LabVIEW 的 “类型转换” 不进行数值缩放,而是按二进制位强制 reinterpret,等效于 C 语言的 `*(float*)&u32_value`。
- 确保四字节内容符合 IEEE 754 单精度格式,否则可能输出 `NaN`、`Inf` 或无意义值。

无需手动解析符号/指数/尾数,LabVIEW 自动按 IEEE 754 处理。若处理通信数据(如 Modbus),常需先拼接字节、判断字节序,再 Type Cast。

wdyjz 发表于 2026-5-28 19:57:41

在 LabVIEW 中将四字节(32 位)数据转换为单精度浮点数(SGL),核心方法是使用“类型转换”(Type Cast)函数,确保输入为 U32 且输出设为 SGL(单精度浮点数),按 IEEE 754 标准解释字节。

- 若输入是 十六进制字符串(如 `"40490FDB"`):先用 “十六进制字符串至数值” 转为 U32,再用 “类型转换”(右键设输出为 SGL)得浮点数。
- 若输入是 字节数组(如从串口收到的 4 字节):可直接 “类型转换”(输入接 U8 数组,输出设为 SGL),但需注意字节序(大端/小端);若结果异常,插入 “交换字节” 函数(编程 → 数值 → 数据操作)。
- LabVIEW 的 “类型转换” 不进行数值缩放,而是按二进制位强制 reinterpret,等效于 C 语言的 `*(float*)&u32_value`。
- 确保四字节内容符合 IEEE 754 单精度格式,否则可能输出 `NaN`、`Inf` 或无意义值。

无需手动解析符号/指数/尾数,LabVIEW 自动按 IEEE 754 处理。若处理通信数据(如 Modbus),常需先拼接字节、判断字节序,再 Type Cast。
页: [1]
查看完整版本: 怎样把16进制字符串转为单精度浮点数