2013-08-13 47 views
7

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

+0

những gì bạn có nghĩa là "in nó một cách unsigned"? – erencan

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); 
} 
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 
Các vấn đề liên quan