如何在java中将十六进制字符串转换为long? [英] How to convert a hexadecimal string to long in java?
问题描述
我想在java中将一个十六进制字符串转换为long。
我尝试了一般转换。
String s =4d0d08ada45f9dde1e99cad9;
long l = Long.valueOf(s).longValue();
System.out.println(l);
String ls = Long.toString(l);
但是我收到以下错误消息:
java.lang.NumberFormatException:用于输入字符串:4d0d08ada45f9dde1e99cad9
有没有什么办法在String中将String转换为long?或者我在尝试哪些是不可能的!
谢谢!
Long.decode(str)
接受多种格式:
接受十进制,十六进制,以及由以下
语法给出的八进制
数字:
DecodableString:
- 签名 opt DecimalNumeral
- Sign opt 0x HexDigits
- Sign opt 0X HexDigits
- Sign opt #HexDigits
- Sign opt 0 OctalDigits
>
签名:
- -
但是在你的情况下,这并不会起作用,你的字符串已经超出了长期持有的范围。您需要 BigInteger
:
String s =4d0d08ada45f9dde1e99cad9;
BigInteger bi = new BigInteger(s,16);
System.out.println(bi);
输出:
23846102773961507302322850521
对于比较,这里是 Long .MAX_VALUE
:
9223372036854775807
I want to convert a hex string to long in java.
I have tried with general conversion.
String s = "4d0d08ada45f9dde1e99cad9";
long l = Long.valueOf(s).longValue();
System.out.println(l);
String ls = Long.toString(l);
But I am getting this error message:
java.lang.NumberFormatException: For input string: "4d0d08ada45f9dde1e99cad9"
Is there any way to convert String to long in java? Or am i trying which is not really possible!!
Thanks!
Long.decode(str)
accepts a variety of formats:
Accepts decimal, hexadecimal, and octal numbers given by the following grammar:
DecodableString:
- Signopt DecimalNumeral
- Signopt 0x HexDigits
- Signopt 0X HexDigits
- Signopt # HexDigits
- Signopt 0 OctalDigits
Sign:
- -
But in your case that won't help, your String is beyond the scope of what long can hold. You need a BigInteger
:
String s = "4d0d08ada45f9dde1e99cad9";
BigInteger bi = new BigInteger(s, 16);
System.out.println(bi);
Output:
23846102773961507302322850521
For Comparison, here's Long.MAX_VALUE
:
9223372036854775807
这篇关于如何在java中将十六进制字符串转换为long?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!