byte

java中byte转换的注意事项

星期六, 一月 19th, 2013 | JAVA-and-J2EE | 没有评论

1
2
3
4
5
6
7
8
9
10
11
public static String bytes2HexString(byte[] b) {
   String ret = "";
   for (int i = 0; i < b.length; i++) {
	String hex = Integer.toHexString(b[i] & 0xFF);
	if (hex.length() == 1) {
		hex = '0' + hex;
		}
	ret += hex.toUpperCase();
	}
        return ret;
	}

上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.

其原因在于:
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式

在这里先温习下计算机基础理论
› Continue reading

Tags: ,

Search

文章分类

Links

Meta