我有以下哪个ID等以端口到Java无符号长在Java中,使用的BigInteger用于算法,但BigInteger.toByteArray返回14个字节,而不是8
unsigned long long* data=(unsigned long long*)pBuffer; // file data
unsigned long long crypt = 0x0000;
unsigned long long next_crypt;
unsigned int len = size >> 3;
for(unsigned int i=0; i<len;i++) {
next_crypt = crypt+data[i]-0xCAFEBABE;
data[i] = ((data[i]<<0x1d)|(data[i]>>0x23))+0xCAFEBABE;
data[i] = (data[i]<<0x0e)|(data[i]>>0x32);
data[i] = data[i] - crypt;
crypt = next_crypt;
}
我试图端口这对java的C代码使用很长,但是这会导致负值。因此,我切换到biginteger,因为我必须做算术(位移等)。我使用BigInteger获得了所需的64位无符号长整型值,但是当我想将它转换为字节(BigInteger.toByteArray)时,它的长度是14个字节,不再是8个字节 - 所以我不能再修改我的数组/文件。我尝试使用toLongValue(),但数据不正确。
由于
这是一个无符号long long - 8个字节! – Steve 2011-03-12 01:52:53
如果您没有向我们展示Java版本,您希望得到答案吗? – 2011-03-12 03:35:14