一个格局化输出二进制数据的对象
添加时间:2013-7-11 点击量:
public static String byteToHexString(byte[] arr) {
StringBuffer sb = new StringBuffer(arr.length 2);
sb.append(00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text\n);
sb.append(-------------------------------------------------------\n);
for (int i = 0; i < arr.length; i++) {
String hex = Integer.toHexString(0 xFF & arr[i]).toUpperCase();
if (hex.length() == 1) {
hex = 0 + hex;
}
sb.append(hex).append( );
if ((i + 1) % 16 == 0) {
//TODO
sb.append(\n);
}
}
sb.append(\n);
return sb.toString();
}
测试:
import java.math.BigInteger;
import java.util.BitSet;
/
测试bitset 的异或操纵能不克不及正确的的看出两个bigInteger的bit 位之间的差别
@author leo
/
public class TestBitSetAndBigInteger {
/
@param args
/
public static void main(String[] args) {
BigInteger i1 = new BigInteger(1020);
BigInteger i2 = new BigInteger(1021);
BigInteger i3 = new BigInteger(10131036798906733839);
BigInteger i4 = new BigInteger(10131036798906734863);//i3 + 1024
BitSet s1 = BitSet.valueOf(i1.toByteArray());
BitSet s2 = BitSet.valueOf(i2.toByteArray());
BitSet s3 = BitSet.valueOf(i3.toByteArray());
BitSet s4 = BitSet.valueOf(i4.toByteArray());
System.out.println(i1:::::\n + Utils.byteToHexString(i1.toByteArray()));
System.out.println(s1:::::\n + Utils.byteToHexString(s1.toByteArray()));
System.out.println(i2:::::\n + Utils.byteToHexString(i2.toByteArray()));
System.out.println(s2:::::\n + Utils.byteToHexString(s2.toByteArray()));
System.out.println(i3:::::\n + Utils.byteToHexString(i3.toByteArray()));
System.out.println(s3:::::\n + Utils.byteToHexString(s3.toByteArray()));
System.out.println(i4:::::\n + Utils.byteToHexString(i4.toByteArray()));
System.out.println(s4:::::\n + Utils.byteToHexString(s4.toByteArray()));
BitSet s11 = (BitSet) s1.clone();
s11.xor(s2);
BitSet s22 = (BitSet) s2.clone();
s22.xor(s1);
System.out.println(s1 xor s2 = + s11.cardinality());
System.out.println(s2 xor s1 = + s22.c
i1:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FC
s1:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FC
i2:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FD
s2:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FD
i3:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 15 0F
s3:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 15 0F
i4:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 19 0F
s4:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 19 0F
s1 xor s2 = 1
s2 xor s1 = 1
s3 xor s4 = 2
s4 xor s3 = 2
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永
public static String byteToHexString(byte[] arr) {
StringBuffer sb = new StringBuffer(arr.length 2);
sb.append(00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text\n);
sb.append(-------------------------------------------------------\n);
for (int i = 0; i < arr.length; i++) {
String hex = Integer.toHexString(0 xFF & arr[i]).toUpperCase();
if (hex.length() == 1) {
hex = 0 + hex;
}
sb.append(hex).append( );
if ((i + 1) % 16 == 0) {
//TODO
sb.append(\n);
}
}
sb.append(\n);
return sb.toString();
}
测试:
import java.math.BigInteger;
import java.util.BitSet;
/
测试bitset 的异或操纵能不克不及正确的的看出两个bigInteger的bit 位之间的差别
@author leo
/
public class TestBitSetAndBigInteger {
/
@param args
/
public static void main(String[] args) {
BigInteger i1 = new BigInteger(1020);
BigInteger i2 = new BigInteger(1021);
BigInteger i3 = new BigInteger(10131036798906733839);
BigInteger i4 = new BigInteger(10131036798906734863);//i3 + 1024
BitSet s1 = BitSet.valueOf(i1.toByteArray());
BitSet s2 = BitSet.valueOf(i2.toByteArray());
BitSet s3 = BitSet.valueOf(i3.toByteArray());
BitSet s4 = BitSet.valueOf(i4.toByteArray());
System.out.println(i1:::::\n + Utils.byteToHexString(i1.toByteArray()));
System.out.println(s1:::::\n + Utils.byteToHexString(s1.toByteArray()));
System.out.println(i2:::::\n + Utils.byteToHexString(i2.toByteArray()));
System.out.println(s2:::::\n + Utils.byteToHexString(s2.toByteArray()));
System.out.println(i3:::::\n + Utils.byteToHexString(i3.toByteArray()));
System.out.println(s3:::::\n + Utils.byteToHexString(s3.toByteArray()));
System.out.println(i4:::::\n + Utils.byteToHexString(i4.toByteArray()));
System.out.println(s4:::::\n + Utils.byteToHexString(s4.toByteArray()));
BitSet s11 = (BitSet) s1.clone();
s11.xor(s2);
BitSet s22 = (BitSet) s2.clone();
s22.xor(s1);
System.out.println(s1 xor s2 = + s11.cardinality());
System.out.println(s2 xor s1 = + s22.c
i1:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FC
s1:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FC
i2:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FD
s2:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
03 FD
i3:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 15 0F
s3:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 15 0F
i4:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 19 0F
s4:::::
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 text
-------------------------------------------------------
00 8C 98 AC 4A C5 3F 19 0F
s1 xor s2 = 1
s2 xor s1 = 1
s3 xor s4 = 2
s4 xor s3 = 2
容易发怒的意思就是: 别人做了蠢事, 然后我们代替他们, 表现出笨蛋的样子。—— 蔡康永