java二进制 中文_Java 实现中文与二进制代码互转

FkdtduzNJ-aUje9G8GcoaQcPtMSe

//将二进制字符串转化为中文

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

//https://zhidao.baidu.com/question/417113915.html

public class BinaryToString {

//中文转二进制在线工具 http://www.5ixuexiwang.com/str/binary.php

// 待处理的字符串

public static final String SOURCE = "101111001110100101001101001110100100000001110111111111000011001001011101010010110011000100101100101101011111010011010011110111111111100001100101100100101001110110110101111100111101010101101100100000100110011000101111101111101010010100011011110111111000000000010";

public static void main(String[] args) {

// 定义正则表达式

// 匹配所有由1或0组成的8位字符

Pattern p = Pattern.compile("[10]{8}");

// 定义匹配器,与源字符串关连上

Matcher m = p.matcher(SOURCE);

// 安放匹配结果

//List list = new ArrayList(); //方法一 用泛型

List list = new ArrayList(); //方法二 将泛型拿掉,表示所有数据以Object类型存储

// 开始搜寻pattern

// 先将8位的字符串按2进制扫描为Integer

// 由于后面的须求数字再强制转成byte

// 存入list中

while (m.find()) {

list.add((byte) Integer.parseInt(m.group(), 2));

}

// 准备将list转为byte数组

// 由于String构造器参数类型的限制

byte[] b = new byte[list.size()];

// 开始转换

for (int j = 0; j < b.length; j++) {

//b[j] = list.remove(0); //方法一 去掉泛型后这里会报错,因为取出的是Object类型

b[j] = (Byte) list.remove(0); //方法二 把Object强制转成Byte就可以了

}

/*

List.remove(int index)是将指定位置的元素删除,

然后右边所有剩下的数据向左移一位,填补第一个数据的空缺。

remove(0)中0表示第一个元素,不停的调用remove(0)导致所有元素被删光,

剩下一个空集合。除了删除指定元素外,同时也具有返回值,就是被删掉的元素。

*/

// 将数组转换为String输出

// 故意不指定字符集(GBK),让编绎器按系统默认打印

System.out.println(new String(b));

}

}

Java将中文字符转化为二进制输出

import java.io.UnsupportedEncodingException;

/*将中文字符串转化为二进制输出

* 16位二进制码对应一个中文汉字

* */

public class ChineseToBinary {

public static void main(String[] args) {

String string = "我爱你";

byte[] b = null;

try {

b = string.getBytes("gbk");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

for (int i = 0; i < b.length; i++) {

System.out.print(Integer.toBinaryString(b[i] & 0xff));

}

String fString = new String(b);

System.out.print("\n"+fString);

}

}

Java语言采用的是Unicode编码方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值