在MATLAB中使用十六进制浮点常量解析文件

时间:2013-02-23 01:19:35

标签: c++ c matlab parsing floating-point

我试图在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后面的数字作为无偏指数。然后我打算为其他数字重复这个程序。

谢谢!

1 个答案:

答案 0 :(得分:0)

这实际上就是我想要的:

c = sscanf(line,'b32%c %c%c.%xP%d %c%c.%xP%d %c%c.%xP%d',[1,inf]);