使用 Apache Codec 的 BinaryCodec 实现字符串和二进制互转

本文将介绍怎样使用 Apache Codec 的 BinaryCodec 类实现字符串和二进制之间相互转换。

org.apache.commons.codec.binary.BinaryCodec 类可以在“0”和“1”的字节数组和字符串之间进行转换。例如:ASCII 中的 A 等于 65,其二进制为 0100 0001,我们可以使用 BinaryCodec 类将字符串“A”转换成“01000001”二进制字符串。同时,我们也可以将二进制字符串“01000001”转换成字符串“A”(这里为了方便分析,字符串中只包含了一个A字符)。

BinaryCodec 类常用方法定义如下:

  • byte[] decode(byte[] ascii)

    解码一个字节数组,其中每个字节表示一个ASCII‘0’或‘1’。

  • Object decode(Object ascii)

    解码一个字节数组,其中每个字节表示一个ASCII‘0’或‘1’。

  • byte[] encode(byte[] raw)

    将原始二进制数据数组转换为ASCII 0和1个字符的数组。

  • Object encode(Object raw)

    将原始二进制数据数组转换为ASCII 0和1个字符的数组。

  • static byte[] fromAscii(byte[] ascii)

    解码一个字节数组,其中每个字节表示一个ASCII‘0’或‘1’。

  • static byte[] fromAscii(char[] ascii)

    解码一个字符数组,其中每个字符表示ASCII‘0’或‘1’。

  • static byte[] toAsciiBytes(byte[] raw)

    将原始二进制数据数组转换为ASCII 0和1个字符字节的数组,每个字节是一个截断字符。

  • static char[] toAsciiChars(byte[] raw)

    将原始二进制数据数组转换为ASCII 0和1个字符的数组。

  • static String toAsciiString(byte[] raw)

    将原始二进制数据数组转换为ASCII 0和1个字符的字符串。

  • byte[] toByteArray(String ascii)

    解码字符串,其中字符串的每个字符表示ASCII‘0’或‘1’。

示例代码

(1)使用 decode() 和 encode() 方法实现字符串和二进制字符串之间相互转换,代码如下:

package com.huangx.codec.binary;

import org.apache.commons.codec.binary.BinaryCodec;

public class BinaryCodecDemo {

    public static void main(String[] args) {
        // ASCII 中的 A 等于 65,二进制为 0100 0001
        String str = "A";
        BinaryCodec binaryCodec = new BinaryCodec();

        // 将字符转换成二进制字符串表示(即0和1)
        byte[] encodeResult = binaryCodec.encode(str.getBytes());
        System.out.println(new String(encodeResult)); // 输出:01000001

        // 将二进制字符串转换成对应的字符
        byte[] decodeResult = binaryCodec.decode("01000001".getBytes());
        System.out.println(new String(decodeResult)); // 输出:A
    }

}

运行上面代码,输出结果如下:

01000001
A

(2)使用 fromAscii 静态方法快速的将二进制字符串转换成原始值,代码如下:

package com.huangx.codec.binary;

import org.apache.commons.codec.binary.BinaryCodec;

public class BinaryCodecDemo2 {

    public static void main(String[] args) {
        // ASCII 中的 A 等于 65,B 等于 66 二进制为 0100 0001 0100 0010
        String binaryStr = "0100000101000010";
        byte[] result1 = BinaryCodec.fromAscii(binaryStr.getBytes());
        System.out.println(new String(result1));

        byte[] result2 = BinaryCodec.fromAscii(binaryStr.toCharArray());
        System.out.println(new String(result2));
    }

}

运行上面代码,输出结果如下:

BA
BA

(3)使用静态方法 toAsciiBytes 将给的原始字符串转换成二进制字符串,代码如下:

package com.huangx.codec.binary;

import org.apache.commons.codec.binary.BinaryCodec;

public class BinaryCodecDemo3 {

    public static void main(String[] args) {
        // ASCII 中的 A 等于 65,B 等于 66 二进制为 0100 0001 0100 0010
        // BA 等于 0100000101000010
        String binaryStr = "BA";
        byte[] result1 = BinaryCodec.toAsciiBytes(binaryStr.getBytes());
        System.out.println(new String(result1));

        char[] result2 = BinaryCodec.toAsciiChars(binaryStr.getBytes());
        System.out.println(new String(result2));

        String result3 = BinaryCodec.toAsciiString(binaryStr.getBytes());
        System.out.println(result3);
    }

}

运行上面代码,输出结果如下:

0100000101000010
0100000101000010
0100000101000010

(4)使用静态方法 toAsciiChars 快速将原始数据转换成二进制字符串,代码如下:

package com.huangx.codec.binary;

import org.apache.commons.codec.binary.BinaryCodec;

public class BinaryCodecDemo4 {

    public static void main(String[] args) {
        // ASCII 中的 A 等于 65,B 等于 66 二进制为 0100 0001 0100 0010
        // BA 等于 0100000101000010
        String binaryStr = "BA";
        byte[] result1 = BinaryCodec.toAsciiBytes(binaryStr.getBytes());
        System.out.println("result1=" + new String(result1));

        char[] result2 = BinaryCodec.toAsciiChars(binaryStr.getBytes());
        System.out.println("result2=" + new String(result2));

        String result3 = BinaryCodec.toAsciiString(binaryStr.getBytes());
        System.out.println("result43=" + result3);

        BinaryCodec binaryCodec = new BinaryCodec();
        byte[] result4 = binaryCodec.toByteArray(result3);
        System.out.println("result4=" + new String(result4));
    }

}

运行上面代码,输出结果如下:

result1=0100000101000010
result2=0100000101000010
result43=0100000101000010
result4=BA
我们常常听人说,人们因工作过度而垮下来,但是实际上十有八九是因为饱受担忧或焦虑的折磨。 —— 卢伯克.J.
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号