gpt4 book ai didi

java - 如何在 Java 中将 64 位宽度的二进制字符串转换为 long?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:37 25 4
gpt4 key购买 nike

我想把一个64位宽的二进制字符串转成long,有一个静态方法:

Long.parseLong(String s, int radix)

这样做,但它不适合我的情况。

问题是我的二进制字符串是机器风格的 long int。

例如:

1111111111111111111111111111111111111111111111111111111110000101代表-123,但是这个方法把它识别为一个巨大的正数,这让我很烦恼,我该如何解决这个问题?

我必须编写一个函数来完成补码吗?

最佳答案

你可以使用 BigInteger

public static void main(String... args) {
String s = "1111111111111111111111111111111111111111111111111111111110000101";
long l = parseLong(s, 2);
System.out.println(s +" => " + l);

String s2 = s.substring(1);
long l2 = parseLong(s2, 2);
System.out.println(s2 +" => " + l2);
}

private static long parseLong(String s, int base) {
return new BigInteger(s, base).longValue();
}

打印

1111111111111111111111111111111111111111111111111111111110000101 => -123
111111111111111111111111111111111111111111111111111111110000101 => 9223372036854775685

关于java - 如何在 Java 中将 64 位宽度的二进制字符串转换为 long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com