Java –如何将字节转换为二进制字符串

在Java中,我们可以使用Integer.toBinaryString(int)将字节转换为代表二进制字符串。 查看Integer.toBinaryString(int)方法签名,它将一个整数作为参数并返回一个String。

Integer.java
public final class Integer extends Number
        implements Comparable<Integer>, Constable, ConstantDesc {

          public static String toBinaryString(int i) {
            return toUnsignedString0(i, 1);
          }

          //...
}

如果我们传递一个byte到这种方法,Java将自动施放/拓宽byteint和应用符号扩展 。 如果我们不想要符号扩展名,请使用0xff屏蔽(按位和)。 为了进一步理解前面的语句,请阅读本章如何在Java中将字节转换为无符号字节

字节->整数->二进制

这个Java示例将一个字节打印为二进制字符串,并用零填充前导。

ByteToBinary.java
package com.mkyong.crypto.bytes;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class ByteToBinary {

    public static void main(String[] args) {

        byte aByte = (byte) -2;                                                         // -2 (signed) and 254 (unsigned)
        System.out.println("Input : " + aByte);

        // byte to an unsigned integer
        // & 0xff to prevent sign extension, no effect on positive
        int result = aByte & 0xff;

        System.out.println(result);                                                     // 254
        System.out.println(Integer.toBinaryString(result));                             // 1111 1110

        String resultWithPadZero = String.format("%32s", Integer.toBinaryString(result))
                .replace(" ", "0");

        System.out.println(resultWithPadZero);                                          // 00000000000000000000000011111110
        System.out.println(printBinary(resultWithPadZero, 8, "|"));                     // 00000000|00000000|00000000|11111110

    }

    // pretty print binary with separator
    public static String printBinary(String binary, int blockSize, String separator) {

        // split by blockSize
        List<String> result = new ArrayList<>();
        int index = 0;
        while (index < binary.length()) {
            result.add(binary.substring(index, Math.min(index + blockSize, binary.length())));
            index += blockSize;
        }

        return result.stream().collect(Collectors.joining(separator));
    }

}

输出量

Terminal
Input : -2
254
11111110
00000000000000000000000011111110
00000000|00000000|00000000|11111110

对于Java 8,我们可以使用新的API将字节转换为无符号的int。

int result = Byte.toUnsignedInt(aByte);

参考文献

翻译自: https://mkyong.com/java/java-how-to-convert-a-byte-to-a-binary-string/

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值