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?
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); –
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. –