2013-02-23 33 views
0

我想解析一個包含MATLAB中某些浮點測試向量的文件。在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

爲什麼這個標記[標籤:C++]和[標籤:C]? – Johnsyweb 2013-02-23 01:36:08

+0

以防萬一在該社區有人提出更好的基於c或c +的解決方案。 – Veridian 2013-02-23 01:39:49

+0

請參閱http://stackoverflow.com/questions/2062259/using-c-c-to-efficiently-de-serialize-a-string-comprised-of-floats-tokens-and?rq=1 – 2013-02-23 02:25:41

回答

0

這實際上就是我一直在尋找:

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

這些部件將形成一個verilog測試臺。像這樣:src1 = 32'h7F7FFFFF; src2 = 32'h00800000; – Veridian 2013-02-24 01:04:59