. 编写byte[]数组转二进制字符串的方法。(10分)
二进制字符串格式:每个byte用8个字符组成,字符为'0'或'1',例如0xFF的二进制字符串为"11111111";两个byte的二进制字符串之间用空格分隔。
方法定义如下:
public String bytes2bitString(byte[] bytes)
例如: byte[] array = {0x00,(byte)0xFF,0xAB};
String bitStr = bytes2bitString(array);
System.out.println(bitStr);输出结果为:
00000000 11111111 10101011
注意:禁止使用Integer.toBinarySring(int)方法。
2. 编写二进制字符串转byte[]数组的方法。(30分)
方法定义如下:
public byte[] bitString2bytes(String bitString)
例如:
String bitStr = "00111100 11110000"
byte[] bytes = bitString2bytes(bitStr);
System.out.println(bytes.length);
System.out.println(bytes[0]); //0x3C
System.out.println(bytes[1]); //0xF0
输出结果为:
2
60
二进制字符串格式:每个byte用8个字符组成,字符为'0'或'1',例如0xFF的二进制字符串为"11111111";两个byte的二进制字符串之间用空格分隔。
方法定义如下:
public String bytes2bitString(byte[] bytes)
例如: byte[] array = {0x00,(byte)0xFF,0xAB};
String bitStr = bytes2bitString(array);
System.out.println(bitStr);输出结果为:
00000000 11111111 10101011
注意:禁止使用Integer.toBinarySring(int)方法。
2. 编写二进制字符串转byte[]数组的方法。(30分)
方法定义如下:
public byte[] bitString2bytes(String bitString)
例如:
String bitStr = "00111100 11110000"
byte[] bytes = bitString2bytes(bitStr);
System.out.println(bytes.length);
System.out.println(bytes[0]); //0x3C
System.out.println(bytes[1]); //0xF0
输出结果为:
2
60
解决方案 »
- 求一个Java多线程例子
- Tomcat重启后log4j不打印日志
- 请做过有关地图的项目的高手进 提问一个自己在做GUI界面遇到的问题 !!!!!!
- 判断周六、周日的奇怪现象,附源码
- jdbc连db2时出错
- 有关JAVA读取不同格式文档的问题,请各位大虾进来给小弟点建议。来者都有分!!!!
- 如何(停止)关闭GUI程序?
- eclipse中新建类怎么只有:java.lang.object一种?
- Java连接SQL Sever时的问题(关于怎么在类中连接到SQL Sever)
- 一个关于JPopupMenu的简单问题
- java 对图片的读写问题
- 各位大侠,都来说几句啊....java 有什么好的关于 软件开发的书籍... 我看C# 都有好多好书了...难道。。
static int bytes2int(byte[] b)
{
//byte[] b=new byte[]{1,2,3,4};
int mask=0xff;
int temp=0;
int res=0;
for(int i=0;i<4;i++){
res<<=8;
temp=b[i]&mask;
res|=temp;
}
return res;
}static byte[] int2bytes(int num)
{
byte[] b=new byte[4];
int mask=0xff;
for(int i=0;i<4;i++){
b[i]=(byte)(num>>>(24-i*8));
}
return b;
}
百度到的。。
private static String toUnsignedString(int i, int shift) {
char[] buf = new char[32];
int charPos = 32;
int radix = 1 << shift;
int mask = radix - 1;
do {
buf[--charPos] = digits[i & mask];
i >>>= shift;
} while (i != 0); return new String(buf, charPos, (32 - charPos));
}
public static String bytes2bitString(byte[] bytes) {
StringBuffer sb = new StringBuffer();
sb.append("");
for (int i = 0; i < bytes.length; i++) {
int bInfo = bytes[i];
for(int j =0;j<8;j++){
int iByte = (bInfo >> (7 - j % 8) * 4) & 0x01;
sb.append(iByte);
}
sb.append(" ");
}
return sb.toString();
}
public class BinaryStringChange {
private static char[]digit={'0','1'};
public String bytes2bitString(byte[]bytes){
StringBuffer sb=new StringBuffer();
for(int i=0;i<bytes.length;i++){
int byteLength=8;
char[]ch=new char[byteLength];
while(byteLength>0){
byteLength--;
ch[byteLength]=digit[bytes[i]&0x01];
bytes[i]>>>=1;
}
sb.append(new String(ch)).append(" ");
}
return sb.toString();
}
public byte[] bitString2bytes(String bitString){
String s[]=bitString.split(" ");
byte[] bytes=new byte[s.length];
for(int i=0;i<s.length;i++){
int buffer=0;
int doubleIt=1;
for(int j=s[i].length()-1;j>=0;j--){
int digit=Integer.parseInt(new Character(s[i].charAt(j)).toString());
buffer+=digit*doubleIt;
doubleIt=doubleIt<<1;
}
bytes[i]=(byte)buffer;
}
return bytes;
}
public static void main(String... args){
byte[] array = {(byte)0x00,(byte)0xFF,(byte)0xAB};
String bitStr = "00111100 11110000" ;
BinaryStringChange bsc=new BinaryStringChange();
System.out.println(bsc.bytes2bitString(array));
byte[] result=bsc.bitString2bytes(bitStr);
for(int i=0;i<result.length;i++){
System.out.println(result[i]);
}
}
}