我试图在MATLAB中解析包含一些浮点测试向量的文件。
以下是文件的一部分:
b32+ +1.7FFFFFP127 -1.7FFFFFP127 +0.0P0
b32+ +1.000000P0 -1.6D0976P9 -1.6CC976P9
b32+ +1.000000P-126 -1.000000P-126 +0.0P0
b32+ -1.7FFFFFP127 +1.7FFFFFP127 +0.0P0
b32- -1.7FFFFFP127 -1.7FFFFFP127 +0.0P0
b32- +1.000000P0 -1.000000P0 +1.000000P1
b32- -1.7C3AB6P14 +1.000000P0 -1.7C3CB6P14
b32- +1.2F0948P14 +1.000000P0 +1.2F0748P14
b32- -1.000000P-126 +1.000000P-126 -1.000000P-125
b32- +1.000000P-126 +1.000000P-126 +0.0P0
b32- -1.000000P-126 +1.0410ADP-103 -1.0410AEP-103
b32- +1.7FFFFFP127 +1.7FFFFFP127 +0.0P0
b32* +1.12D2C6P92 -1.000000P0 -1.12D2C6P92
b32* +1.7FFFFFP127 -1.000000P0 -1.7FFFFFP127
b32* -1.7FFFFFP127 +1.000000P0 -1.7FFFFFP127
b32* -1.5FEA32P-51 +1.000000P0 -1.5FEA32P-51
b32* -1.000000P-126 +1.000000P0 -1.000000P-126
b32* -1.000000P0 +1.000000P0 -1.000000P0
b32* +1.000000P0 +1.000000P0 +1.000000P0
b32* +1.000000P-126 +1.000000P0 +1.000000P-126
b32* +1.000000P-126 +1.7FFFFFP127 +1.7FFFFFP1
基本上我不知道如何解析这个文件,因为混合数据类型。
此文件中显示了三种可能的浮点运算(另外:b32 +,减法:b32-和乘法:b32 *)。前两个数字是操作数,最后一个数字是结果。
我想在之后以32位浮点格式格式化数字(我可能想出来)。问题是我不知道如何得到像'b32 +'这样的东西,然后把数字变成变量,以便将它们转换成标准的浮点格式。
我打算为数字实现一个算法,它会看到符号(+/-)并根据它设置符号位。看看'。'之间的十六进制。和'P'并将其设置为有效数字。然后取P后面的数字作为无偏指数。然后我打算为其他数字重复这个程序。
谢谢!
答案 0 :(得分:0)
这实际上就是我想要的:
c = sscanf(line,'b32%c %c%c.%xP%d %c%c.%xP%d %c%c.%xP%d',[1,inf]);