2011-03-09 210 views
0

這是我的數據的一部分。從matlab文件導入十六進制數據

ªU€ÿ  ÿ dô  @   @›ÿÿ;< …æ ³ 3m ... 

它被保存在一個文件中。當我用十六進制編輯器查看它時,我可以看到十六進制值。我怎樣才能用matlab讀這個「十六進制數據」?

編輯:我得到這個錯誤:

??? Error using ==> hex2dec at 38 
Input string found with characters other than 0-9, a-f, or A-F. 

與此代碼:

a = fread(fid,1,'uint32','l'); 
fprintf('%X',a) 
b = hex2dec(a); 

回答

2

HEX2DEC()需要一個十六進制數字字符串作爲輸入。

>> hex2dec('28') 

有了您的fread聲明我懷疑你的「A」變量將是一個整數* 4,因此該錯誤消息,我的理解是,該精度已經轉換的十六進制字符串,你聲明的類型。如果你想通過hex2dec傳遞這個值,那麼你需要創建一個字符串輸入。

>> hex2dec(num2str(28)); 

您是否知道二進制文件的格式?即數據的第一個值是整數* 4?

編輯:添加十六進制輸出

響應於該評論,因爲你讀入,MATLAB被轉換的二值數據的數據流分成所定義的格式。如果你想獲得十六進制數據流,那麼最簡單的方法是將它們轉換回十六進制。

a=dec2hex(fread(fid)) 

'a'將以十六進制格式顯示所有值的列表,並且應與您在十六進制編輯器中看到的值相匹配。

+0

當我用十六進制編輯器查看代碼時,我可以看到ASCII值。我認爲這些信息沒有幫助。如何在不使用十六進制編輯器的情況下查看文件輸入? – kame 2011-03-09 13:04:12

+0

對答案的更新有幫助嗎? – Adrian 2011-03-09 15:42:56

1
q=dec2bin(hex2dec(num2str(p)))