这是教程给我的一个例子。我无法理解答案 - 123的解析字节值是83,-1a的解析字节值是-26。请尝试以非常简单的方式向我解释这个方法。
import java.lang.*;
public class ByteDemo {
public static void main(String[] args) {
// create 2 byte primitives bt1, bt2
byte bt1, bt2;
// create and assign values to String's s1, s2
String s1 = "123";
String s2 = "-1a";
// create and assign values to int r1, r2
int r1 = 8; // represents octal
int r2 = 16; // represents hexadecimal
/**
* static method is called using class name. Assign parseByte
* result on s1, s2 to bt1, bt2 using radix r1, r2
*/
bt1 = Byte.parseByte(s1, r1);
bt2 = Byte.parseByte(s2, r2);
String str1 = "Parse byte value of " + s1 + " is " + bt1;
String str2 = "Parse byte value of " + s2 + " is " + bt2;
// print bt1, bt2 values
System.out.println( str1 );
System.out.println( str2 );
}
}
答案 0 :(得分:2)
第一个值123被解释为八进制数,即带有基数8的数字。
现在1 * 8 ^ 2 + 2 * 8 + 3 = 64 + 16 + 3 = 83
第二个值-1a被解释为十六进制数,即带有16的数字。由于我们只有10个符号用于数字(0,..,9),符号a,b ,c,d,e,f用于表示十进制值大于9的数字。因此a(16)= 10(10),b(16)= 11(10),依此类推。
和 - (1 * 16 + 10)= -26
答案 1 :(得分:2)
在你的第一个例子中,你取123并将其解释为八进制表示中的数字,这意味着第一个数字不是100而是只有64(8 * 8)。因此123被解释为8 * 8 * 1 + 8 * 2 + 3 = 83。 在第二个例子中,1a被解释为十六进制表示。所以-1a = - (16 * 1 + 10)= -26。