Java 类似 Python 中的 getLeastSignificantBits() 和 getMostSignificantBits 函数?

ris*_*abh 2 python bitmap bit

有人可以帮我构建一个简单的函数来提取Python中的最低有效位和最高有效位吗?

Java 中的 Ex 代码:

UUID u = UUID.fromString('a316b044-0157-1000-efe6-40fc5d2f0036');
long leastSignificantBits = u.getLeastSignificantBits();

private UUID(byte[] data) {
    long msb = 0;
    long lsb = 0;
    assert data.length == 16 : "data must be 16 bytes in length";
    for (int i=0; i<8; i++)
        msb = (msb << 8) | (data[i] & 0xff);
    for (int i=8; i<16; i++)
        lsb = (lsb << 8) | (data[i] & 0xff);
    this.mostSigBits = msb;
    this.leastSigBits = lsb;
}
Run Code Online (Sandbox Code Playgroud)

--> 输出值:-1160168401362026442

Mat*_*son 5

旧帖子但仍然......只是想我会添加这个:

import struct
import uuid

u = uuid.UUID('c88524da-d88f-11e9-9185-f85971a9ba7d')
msb, lsb = struct.unpack(">qq", u.bytes)
Run Code Online (Sandbox Code Playgroud)

这给出了值:
(-3997748571866721815,-7960683703264757123)...如果我将这些输入到java.util.UUID构造函数中,它会返回uuid“c88524da-d88f-11e9-9185-f85971a9ba7d”

  • 很好的答案,谢谢!对于那些也寻找其他方式的人: uuid.UUID(bytes=struct.pack("&gt;qq", msb, lsb)) (2认同)