2017-05-29 3 views
3

Ich versuche, unsigned char in C zu Matlab-Code zu konvertieren, der Vektor von unsigned Char ist mit hexadezimalen Werten gefüllt. Unterhalb des C-Code:Konvertieren unsigned char in C zu MatLab

int main() 
{ 
    unsigned char value = 0xaa; 
    signed char temp; 
    // cast to signed value 
    temp = (signed char) value; 
    // if MSB is 1, then this will signed extend and fill the temp variable with 1's 
    temp = temp >> 7; 
    // AND with the reduction variable 
    temp = temp & 0x1b; 
    // finally shift and reduce the value 
    printf("%u",((value << 1)^temp)); 
} 

Die Matlab-Funktion, die ich schaffen, das Gleiche zu tun:

value = '0xaa'; 
temp = int8(value); 
temp2 = int8(value); 
temp = bitsra(temp,7); 
temp = and(temp,'0x1b'); 
galois_value = xor(bitsll(temp2,1),temp); 
disp(galois_value); 

der gedruckten Werte unterschiedlich sind in jedem Code, jemand weiß, was passiert?

+0

Hinweis, Ihre C-Code stützt sich auf die Implementierung definiert Verhalten; eine wohldefinierte Art und Weise zu tun, was ich vermute, dass Sie beabsichtigen wäre unsigned int temp = (Wert> SCHAR_MAX? 0x1b: 0); –

+0

Das ist nicht das Problem, der C-Code ist eine Bibliothek von Texas Instruments in MSP430 zu verwenden Serie MCU. Ich muss den C-Code in MatLab implementieren, um die Leistung zu vergleichen, deshalb kann ich den C-Code nicht ändern. –

Antwort

2

Sie haben eine Zeichenfolge erstellt:

value = '0xaa'; 

4 Zeichen, ['0' 'x' 'a' 'a'].

In MATLAB Sie im Allgemeinen nicht tun Variablen behandeln bitweise, aber wenn Sie wollen, versuchen Sie:

temp = int8(hex2dec('aa')); 
+0

Kann ich damit einen ganzen Vektor von char konvertieren? Wie 'char = {'aa, bb, cc'}' und dann 'temp = int8 (hex2dec (char));' –

+0

Wenn ich den Wert in MatLab drucke, bekomme ich immer '11' und der C-Code gibt mir' 335 ', warum erhält die' galois_value'-Variable einen logischen Wert? –

+1

@IAGOSESTREMOchoa Sie haben ein Problem: Sie versuchen, ein Programm Zeile für Zeile zu übersetzen. Tun Sie das nicht, besonders bei so unterschiedlichen Sprachen. Versuchen Sie, die gleiche Funktionalität zu erhalten, aber verwenden Sie die besten Methoden für jede Sprache. Die Antworten auf Ihre Fragen können durch Lesen der Dokumentation der MATLAB-Funktionen gelöst werden. –

Verwandte Themen