我需要将此代码(在 C++ 中)转换为 Java 代码:
short i;
short j;
short k;
short result;
unsigned short m_table[ 256 ]
for ( i = 0 ; i < 256 ; i++ )
{
k = i << 8;
result = 0;
for ( j = 0 ; j < 8 ; j++ )
{
if ( ( result^ k ) & 0x8000 )
result= ( result<< 1 ) ^ 0x1021;
else
result<<= 1;
k <<= 1;
}
m_table[ i ] = (unsigned short) result;
}
...但我从来没有得到相同的结果...
我的 Java 代码是:
int i;
int j;
int k;
int result;
int m_table[ 256 ] = new int[256];
for ( i = 0 ; i < 256 ; i++ ) {
k = (i << 8);
result = 0;
for ( j = 0 ; j < 8 ; j++ ) {
if ( (( result^ k ) & 0x8000) != 0)
result= (( result<< 1 ) ^ 0x1021);
else
result<<= 1;
k <<= 1;
}
m_table[ i ] = (result);
}
最佳答案
在 Java 中使用位操作需要小心。 Java 没有任何无符号类型,因此您可能需要使用比无符号种类大一号的类型。
关于Java C++代码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561808/