0
我有一個有兩組數據的示例結構。第一個數據包含以下十六進制數組:'00 7F 3F FF 08 FF 60 26'然後當我將它轉換成二進制,然後小數我得到一個正確的答案是'0 127 63 255 8 255 96 38' 。將十六進制數組轉換爲二進制然後轉換爲十進制
但是,我有一些數據數組並沒有像第一個那樣完全排列,他們看起來像這樣,當我嘗試轉換這些數據集時,結果不準確。我得到這樣的東西'64 0 64 0 71',而預期的結果是'1 64 0 15 0 64 0 71'。
這是我的代碼以一個簡單的數據:
%% Structure
a(1).Id = 118;
a(1).Data = '00 7F 3F FF 08 FF 60 26';
a(2).Id = 108;
a(2).Data = '1 40 0 F 00 40 00 47';
%% Hexadecimal (Data) --> Binary --> Decimal
Data = a(2).Data;
str = regexp(Data,' ','split');
Ind = cellfun(@length,str);
str = str(Ind==2);
%Hex to Binary
binary = hexToBinaryVector(str,8,'MSBFirst');
%Binary to Decimal
Decimal = bi2de(binary,'left-msb');
任何幫助將非常感激!
爲什麼中間轉換爲二進制? – Adriaan
好吧,你得到64 0 64 0 71,因爲你正在做'str = str(Ind == 2)',所以只有長度= 2的字符串被輸入到hexToBinaryVector。 2你可以考慮的事情,嘗試當你將1位數字傳入hexToBinaryVector並查看是否有效或在str的左邊添加0(Ind == 1) – GameOfThrows
@Adriaan:我需要二進制數據作進一步分析 – user161816