我想將C中的無符號字符轉換爲matlab代碼,無符號字符的向量用十六進制值填充。下面的C代碼:將C中的無符號字符轉換爲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));
}
,我創建做同樣的事情MATLAB函數:
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);
打印的值在每個代碼不同,有人知道發生了什麼事?
注意,你的C代碼依賴於實現定義的行爲;一個明確的方式來做我想你打算的將是'unsigned int temp =(value> SCHAR_MAX?0x1b:0);' –
這不是問題,C代碼是德州儀器的庫,用於MSP430系列MCU。我需要在MatLab中實現C代碼來比較性能,因爲我無法更改C代碼。 –