Ich habe eine Beispielstruktur, die zwei Datensätze hat. Die ersten Daten enthalten das folgende Hexadezimalfeld '00 7F 3F FF 08 FF 60 26 ' und dann, wenn ich es in binär und dann dezimal umwandle, bekomme ich eine korrekte Antwort, die ' 0 127 63 255 8 255 96 38 ' ist .Konvertieren eines hexadezimalen Array in Binär und dann in Dezimal
Allerdings habe ich einige Datenfelder, die nicht genau wie das erste angeordnet sind, sie sehen in etwa so aus '1 40 0 F 00 40 00 47' und wenn ich versuche, diese Art von Datensätzen zu konvertieren Ergebnis ist ungenau. Ich bekomme so etwas '64 0 64 0 71 ' während das erwartete Ergebnis ist ' 1 64 0 15 0 64 0 71 '.
Dies ist mein Code mit Beispieldaten:
%% 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');
Jede Hilfe wird sehr geschätzt werden!
Warum die Zwischenkonvertierung in binär? – Adriaan
Nun, Sie erhalten 64 0 64 0 71, weil Sie 'str = str (Ind == 2)' tun, so dass nur Länge = 2 Strings in hexToBinaryVector eingegeben werden. 2 Dinge, die Sie berücksichtigen können, versuchen, was passiert, wenn Sie 1 Ziffer in hexToBinaryVector übergeben und sehen, ob funktioniert oder eine 0 an der linken Seite von str hinzufügen (Ind == 1) – GameOfThrows
@Adriaan: Ich brauche die Binärdaten für die weitere Analyse – user161816