Julia中如何基于浮点数大小自动计算reinterpret的对应类型?
合并showFloat函数的解决方案
可以通过参数类型限定和动态计算类型与填充长度来合并这三个函数,避免重复代码:
function showFloat(x::Union{Float16, Float32, Float64}) # 自动匹配对应大小的无符号整数类型 i = reinterpret(Unsigned, x) # 计算16进制和二进制的填充长度 hex_pad = 2 * sizeof(x) bin_pad = 8 * sizeof(x) # 简化打印逻辑 print("0x", string(i, base=16, pad=hex_pad), " 0b", string(i, base=2, pad=bin_pad)) end
关键说明:
- 参数类型范围:用
Union{Float16, Float32, Float64}限定输入,覆盖所有需要处理的浮点类型 - 动态匹配整数类型:
reinterpret(Unsigned, x)会根据输入浮点数的字节大小,自动返回对应的无符号整数类型(比如Float64对应UInt64,Float32对应UInt32) - 填充长度动态计算:
- 16进制每个字节对应2位字符,填充长度设为
2*sizeof(x) - 二进制每个字节对应8位字符,填充长度设为
8*sizeof(x)
无需硬编码固定数值,自动适配所有目标浮点类型
- 16进制每个字节对应2位字符,填充长度设为
内容的提问来源于stack exchange,提问作者Frunobulax
相关产品推荐
相关产品推荐

