16进制字符串 转换成数字的问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:46:18
要转换一个 16位16进制数的字符串 成long型,比如ffffffffffffffff
用long.parseLong(string s , int redix)这个方法,报了java.lang.NumberFormatException 这个错误。
如果少一位、或者首位是小于8的字符 就没这样的错误,求解~

如果出现以下情形之一,则抛出 NumberFormatException 类型的异常:

1.第一个参数是 null 或零长度的字符串。
2.radix 小于 Character.MIN_RADIX 或者大于 Character.MAX_RADIX。
3.任何字符串的字符都不是指定基数的数字,除非第一个字符是减号 '-' ('\u002d'),假定字符串的长度大于 1。
4.字符串表示的值不是 long 类型的值。

long的取值范围:-9223372036854775807 ~ 9223372036854775808
小于ffffffffffffffff的值 显然无法转换了

long lTemp = strtol("0xa10b", NULL, 16);
这样的话,就将0xa10b这个十六制形式的字符串转为十进制的数字了.
注:strtol的功能就是将字符串转为数字,而后面的16就是进制,根据需要,你可以是二进制,八进制,十进制,或是十六进制应该都是可以的.