rõ ràng là java không có loại 'unsigned long', trong khi chúng tôi có thể sử dụng lâu để lưu trữ dữ liệu chưa được ký. Sau đó làm thế nào tôi có thể chuyển đổi nó thành một String hoặc chỉ in nó theo cách 'unsigned'?Cách chuyển đổi 'unsigned long' thành chuỗi trong java
7
A
Trả lời
12
Bạn cần sử dụng BigInteger không may, hoặc viết thói quen của riêng bạn.
Dưới đây là một lớp Unsigned giúp với những cách giải quyết
private static final BigInteger BI_2_64 = BigInteger.ONE.shiftLeft(64);
public static String asString(long l) {
return l >= 0 ? String.valueOf(l) : toBigInteger(l).toString();
}
public static BigInteger toBigInteger(long l) {
final BigInteger bi = BigInteger.valueOf(l);
return l >= 0 ? bi : bi.add(BI_2_64);
}
3
Bạn có thể sử dụng thư viện của bên thứ ba? Số UnsignedLongs.toString(long)
của ổi thực hiện điều này.
4
Như đã đề cập trong một different question trên SO, có một phương pháp cho rằng bắt đầu với Java 8:
System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808
những gì bạn có nghĩa là "in nó một cách unsigned"? – erencan