我正在尝试生成包含浮点文字的 LLVM 文本 IR。为了让它可靠地工作,我需要能够将浮点数转换为它们的十六进制文字表示。例如,结果应该是这样的:
f2hex(0.0001) -> "0x3F1A36E2E0000000"
f2hex(0.1) -> "0x3FB99999A0000000"
f2hex(1.1) -> "0x3FF19999A0000000"
f2hex(3.33333) -> "0x400AAAA8E0000000"
f2hex(4.9) -> "0x40139999A0000000"
f2hex(111.99998) -> "0x405BFFFFA0000000"
我会满足于对算法的详细描述(不依赖于 Javascript 中不可用的库或机器代码),但工作的 Javascript 代码更好。
LLVM 语言参考在此处描述了格式:http: //llvm.org/docs/LangRef.html#simple-constants