Fix Long.toBinaryString, Long.toHexString, and Long.toOctalString for negative values.
Although (int) -1 == (long) -1, Integer.toXString produces a shorter result than
Long.toXString should.
diff --git a/libcore/luni/src/main/java/java/lang/Long.java b/libcore/luni/src/main/java/java/lang/Long.java
index 1b28a5a..1c52896 100644
--- a/libcore/luni/src/main/java/java/lang/Long.java
+++ b/libcore/luni/src/main/java/java/lang/Long.java
@@ -396,7 +396,7 @@
*/
public static String toBinaryString(long v) {
int i = (int) v;
- if (i == v) {
+ if (v >= 0 && i == v) {
return Integer.toBinaryString(i);
}
@@ -422,7 +422,7 @@
*/
public static String toHexString(long v) {
int i = (int) v;
- if (i == v) {
+ if (v >= 0 && i == v) {
return Integer.toHexString(i);
}
@@ -447,7 +447,7 @@
*/
public static String toOctalString(long v) {
int i = (int) v;
- if (i == v) {
+ if (v >= 0 && i == v) {
return Integer.toOctalString(i);
}
int bufLen = 22; // Max number of octal digits in a long