0

我正在尝试在 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 后面的数字作为无偏指数。然后我计划对其他数字重复此过程。

谢谢!

4

1 回答 1

0

这实际上是我正在寻找的:

c = sscanf(line,'b32%c %c%c.%xP%d %c%c.%xP%d %c%c.%xP%d',[1,inf]);
于 2013-02-23T22:27:03.817 回答