实现String类型保存的⼆进制转换为byte类型String类型的⼆进制转换为byte
/**
由于Ide 编码问题,可能会出现显⽰的值不是预期的 0x0f,0xff⽽是带有正负的⼗进制
*这是由于显⽰编码原因,但实际上底层还是转换为byte类型的对象,
可以使⽤js的new String('hex')查看
*/
String str = "0000111111111111";
//将str转换为10进制,这⾥要注意,由于int类型长度限制,str中最多存放三个⼋位⼆进制数
int parseInt = Integer.parseInt(str, 2);
//新建byte数组
byte[] bytes = new byte[8];
/
/定义数组变化长度变量
int j = 0;
/*
计算。
字符串数组怎么转成byte每8位算⼀个字节计算,可以看出是两个byte字节
将⼆进制向右移动 8*(length-i-1)个位置,这样相当于是 00001111 & 0xff 11111111 & 0xff
& 0xff为了保证是16进制
*/
for (int i = 0; i < str.length() / 8; i++) {
byte byte_i = (byte)((parseInt >> 8*((str.length()/8)-i-1)) & 0xff);
//赋值
bytes[j] = byte_i;
j++;
}
//上⾯是思路,下⾯是实现
/**
* 转换算法
* 传输过来的str为⼆进制8*8位
* 需要将其按照每8位分割分别计算
* @param str 字符
* @return 字节数组
*/
private static byte[] getBytes(String str){
// TODO 循环,每次处理8位
int size = str.length()/8;
//定义接收数组
byte[] bytes = new byte[8];
for (int i = 0; i < size; i++) {
//每次截取8位计算
String tmp = str.substring(8*i,8*(i+1));
int tmpInt = Integer.parseInt(tmp,2);
byte tmpByte = (byte)(tmpInt & 0xff);
bytes[i] = tmpByte;
}
return bytes;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论