将十六进制字符串转换为long 17digits java

时间:2014-05-21 14:00:26

标签: java

我正在尝试将"0x6042607b1ba01d8dl"转换为long。

我试过了:

long value = new BigInteger("0x6042607b1ba01d8dl", 16).longValue();
long value = new BigInteger("0x6042607b1ba01d8dl", 32).longValue();
long value = Long.decode("0x6042607b1ba01d8dl");
Long.parseLong("0x6042607b1ba01d8dl");

注意:十六进制数“0x6042607b1ba01d8dl”有17个数字

4 个答案:

答案 0 :(得分:3)

来自BigInteger(String,int)构造函数的javadoc

  

String表示包含一个可选的减号或加号,后跟指定基数中一个或多个数字的序列。

所以你只需要从字符串中删除0x

long value = new BigInteger("6042607b1ba01d8d", 16).longValue();

答案 1 :(得分:2)

BigInteger constructor无法理解您的0x前缀。

使用例如

long value = new BigInteger("6042607b1ba01d8d", 16).longValue();

或者:

String number = "0x6042607b1ba01d8d";
long value = new BigInteger(number.subString(2), 16).longValue();

您也可以使用Long.decode(),它接受​​0x前缀来解码十六进制。

答案 2 :(得分:0)

你可以试试这个:

long value = Long.parseLong("6042607b1ba01d8d", 16);

Long.parseLong有时会失败,因为BigInteger方法更好。

答案 3 :(得分:0)

正如以上代码形式的答案所说:

String bigHexNumber = "0x6042607b1ba01d8d";
if(bigHexNumber.subString(0, 1).equals("0x") {
     bigHexNumber = bigHexNumber.subString(2);
}
long hexInLongForm = new BigInteger(bigHexNumber, 16).longValue();