长整数Long进制间转换
在Java 中 Long类提供了几种静态方法,允许将long类型的数值转换为不同进制的字符串表示形式,包括二进制、十六进制、八进制和十进制。
toBinaryString() 生成整数的二进制字符串
以二进制(基数2)无符号整数形式返回long参数的字符串表示形式。
✍方法声明
public static String toBinaryString(long i);
- 📥入参:i为要转换成字符串的long。
- 🪐返回值:二进制(基数2)参数表示的无符号long值的字符串表示形式。
如果参数为负数,则无符号long值为该参数加上2^64;否则,它等于该参数。
此值将被转换为不带附加前导0的二进制(基数2)ASCII数字字符串。
如果无符号大小为零,则用单个零字符 0 \u0030
表示它;否则,无符号大小表示形式中的第一个字符将不是零字符。
字符‘0’ \u0030
和 ‘1’ \u0031
被用作二进制位。
public static void main(String[] args) {
Long num1 = new Long("12");
String str1 = Long.toBinaryString(num1);
System.out.println(str1);
Long num2 = new Long("0");
String str2 = Long.toBinaryString(num2);
System.out.println(str2);
Long num3 = new Long("-1234567");
String str3 = Long.toBinaryString(num3);
System.out.println(str3);
}
0
1111111111111111111111111111111111111111111011010010100101111001
toHexString() 生成整数的十六进制字符串
以十六进制(基数16)无符号整数形式返回一个long参数的字符串表示形式。
✍方法声明
public static String toHexString(long i);
- 📥入参:i为要转换成字符串的整数。
- 🪐返回值:十六进制(基数16)参数的无符号long值的字符串表示形式。
如果参数为负,则无符号long值为该参数加上2^64;否则,它等于该参数。
此值将被转换为不带附加前导0的十六进制(基数16)ASCII数字字符串。
如果无符号大小为零,则该数字由单个零字符0表示\u0030
;否则,无符号大小表示形式中的第一个字符将不是零字符。
public static void main(String[] args) {
Long num1 = new Long("12");
String str1 = Long.toHexString(num1);
System.out.println(str1);
Long num2 = new Long("0");
String str2 = Long.toHexString(num2);
System.out.println(str2);
Long num3 = new Long("-1234567");
String str3 = Long.toHexString(num3);
System.out.println(str3);
}
0
ffffffffffed2979
toOctalString() 生成整数的八进制字符串
以八进制(基数8)无符号整数形式返回一个long参数的字符串表示形式。
✍方法声明
public static String toOctalString(long i);
- 📥入参:i为要转换成字符串的整数。
- 🪐返回值:八进制参数(基数8)表示的无符号log值的字符串表示形式。
如果参数为负,则无符号long值为该参数加上2^64;否则,它等于该参数。
此值将被转换为不带附加前导0的八进制(基数8)ASCII数字字符串。
如果无符号大小为零,则该数字用单个零字符0 \u0030
表示,否则无符号大小表示形式中的第一个字符将不是零字符。
以下字符都用作八进制数字:‘01234567’,这些是从\u0030
~\u0037
的字符。
public static void main(String[] args) {
Long num1 = new Long("12");
String str1 = Long.toOctalString(num1);
System.out.println(str1);
Long num2 = new Long("0");
String str2 = Long.toOctalString(num2);
System.out.println(str2);
Long num3 = new Long("-1234567");
String str3 = Long.toOctalString(num3);
System.out.println(str3);
}
0
1777777777777773224571
toString() 生成整数的十进制字符串
返回表示指定long的String对象。该参数被转换为有符号的十进制表示形式,并作为字符串返回,该字符串与用该参数和基数10作为参数的toString(Iong,int)方法所得到的值非常相似。
✍方法声明
public String toString()
- 🪐返回值:十进制参数的字符串表示形式。
public static void main(String[] args) {
Long num1 = new Long("12");
String str = num1.toString();
}
✍方法声明
public static String toString(long i);
- 📥入参:i为要转换成字符串的long。
- 🪐返回值:十进制参数的字符串表示形式。
public static void main(String[] args) {
Long num1 = new Long("12");
String str = Long.toString(num1);
}
✍方法声明
public static String toString(long i,int radix);
返回用第二个参数指定基数表示的第一个参数的字符串表示形式。
- 📥入参:i:要转换成字符串的long。radix:在字符串表示形式中使用的基数。
- 🪐返回值:指定基数中参数的字符串表示形式。
如果该基数小于Character.MIN_RADIX
,或大于Character.MAX_RADIX
,则使用基数10。
如果第一个参数是负数,则结果的第一个元素是ASCII字符的减号‘-’。
如果第一个参数非负,则结果中不会出现符号字符。结果的其余字符表示第一个参数的大小。
如果大小为零,则用单个零字符0 \u0030
表示它;否则大小表示形式中的第一个字符将不是零字符。
以下ASCI字符均被用作数字:‘0123456789 abcdefghijklmnopqrstuvwxyz’。这些是从\u0030
到\u0039
和从\u0061
到\u007a
的字符。
如果radix是N,则这些字符的第一个N用作显示顺序中基数N的数字。因此,该数字的十六进制(基数16)表示形式为‘0123456789 bcdef’。
如果需要使用大写字母,则可以在结果上调用 String.toUpperCase()
方法,即:Long.toString(n,l6).toUpperCase()
。
public static void main(String[] args) {
Long num1 = new Long("12345");
String str1 = Long.toString(num1, 32);
String str2 = Long.toString(num1, 40);
String str3 = Long.toString(num1, 10);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
Long num2 = new Long("-123");
String str4 = Long.toString(num2, 16);
System.out.println(str4);
}
12345
12345
-7b
代码中 str2 的基数40超出了有效范围(应该在2到36之间),实际上会取默认值 10。
📝总结
Long类的进制转换方法为开发者提供了一种方便的方式来在不同进制之间转换long类型的数值。
这些方法在处理数字系统、网络协议、数据加密等领域时非常有用,因为它们允许开发者以不同的方式表示和操作整数值。在使用这些方法时,需要注意负数的处理方式,以及自定义基数的范围限制。
此外,对于toString方法,应该使用有效的基数来确保转换的正确性。