java Byte.parseByte方法

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:54:42
parseByte

public static byte parseByte(String s,
int radix)
throws NumberFormatException

将 string 参数分析为一个有符号的 byte,其基数由第二个参数指定。除了第一个字符可以是表示负值的 ASCII 负号 '-' ('\u002D') 之外(这取决于 Character.digit(char, int) 是否返回非负值),该 string 中的字符必须都是指定基数的数字。返回得到的 byte 值。

如果出现下列任何一种情况,则抛出一个 NumberFormatException 类型的异常:

* 第一个参数为 null 或是一个长度为零的字符串。
* 基数小于 Character.MIN_RADIX 或者大于 Character.MAX_RADIX。
* 字符串的任一字符不是指定基数的数字,第一个字符是负号 '-' ('\u002D') 的情况除外(但此时字符串的长度应超过 1)。
* 字符串所表示的值不是 byte 类型的值。

参数:
s - 要分析的包含 byte 表示形式的 String
radix - 在分析 s 时使用的基数
返回:
以指定基数表示的 string 参数所表示的 byte 值
抛出:
NumberFormatException - 如果该 string 不包含一个可分析的 byte。

我想知道public static byte parseByte(String s,int radix)里的参数int radix是什么意思?

例如b[0

这个地方int radix 是指的基数 ,就是指的进制基数

比如你的例子中
b[0] = Byte.parseByte("11", 2) = 3
表示 字符串11以2为基数表示为10进制的byte值是 3 ,这里的11表示的是一个2进制数
b[0] = Byte.parseByte("11", 3) = 4
表示 字符串11以3为基数表示为10进制的byte值是 4 ,这里的11表示的是一个3进制数

如果你给的string 不能转换,或者基数小于2或大于36 会抛出异常


b[0] = Byte.parseByte("12", 2) // 2 进制中只有1和0

b[0] = Byte.parseByte("12", 1) // 基数应该在 1<radix<37

是对第一个参数的说明,说明第一个参数是多少进制的
Byte.parseByte("f",16)等于15

应该是s参数所表示的 byte 值 的位置 但我也不清楚是从0开始的还是1开始(按java的习惯应该是0开始的)
你试试把11的byte打出来 看看是不是这么一回事