将7行目标C代码转换为Java

将7行目标C代码转换为Java,java,android,ios,objective-c,Java,Android,Ios,Objective C,我已经尝试了几个小时用Java实现这段代码。代码使用指针,我不知道如何在Java中实现同样的功能。我试过换位子,但没有成功。有什么想法吗 const char bytes[] = {0xa0,0xc7,0xa2,0xbc,0xd4}; NSData *data = [[NSData alloc] initWithBytes:bytes length:5]; uint8_t *byte = (uint8_t*)[data bytes]; uint8_t command = *byte; byte+

我已经尝试了几个小时用Java实现这段代码。代码使用指针,我不知道如何在Java中实现同样的功能。我试过换位子,但没有成功。有什么想法吗

const char bytes[] = {0xa0,0xc7,0xa2,0xbc,0xd4};
NSData *data = [[NSData alloc] initWithBytes:bytes length:5];
uint8_t *byte = (uint8_t*)[data bytes];
uint8_t command = *byte;
byte++;
NSUInteger password = *(uint32_t*)byte;
NSLog(@"password:%u", (uint32_t)password );  // answer: 3569132231

命令是数组中的第一个字节,最后四个字节是密码

下面是一段与您提供的代码相同的代码:

public static void main(String... args) throws IOException {
    byte b[] = new byte[]{
            (byte) 0xa0, (byte) 0xc7, (byte) 0xa2, (byte) 0xbc, (byte) 0xd4
    };

    byte command = b[0];
    long password = 0;
    for (int i = 1; i < b.length; i++) {
        password += ((long) b[i] & 0xffL) << (8 * (i - 1));
    }
    System.out.println(password);
}

下面是一个工作示例:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

class Test {
    public static void main(String[] args) {

        byte[] bytes = {(byte)0xa0,(byte)0xc7,(byte)0xa2,(byte)0xbc,(byte)0xd4};
        ByteBuffer wrapped = ByteBuffer.wrap(bytes);
        wrapped.order(ByteOrder.LITTLE_ENDIAN);
        System.out.println(wrapped.getInt(1) & 0x00000000ffffffffL);
    }
}