java将字符串整数用二进制表示_将 Java 整数转换为二进制字符串

在Java中,我们可以使用Integer.toBinaryString(int)将Integer转换为二进制字符串表示形式。

Integer.java

public final class Integer extends Number

implements Comparable, Constable, ConstantDesc {

public static String toBinaryString(int i) {

return toUnsignedString0(i, 1);

}

//...

}

本文将向您展示两种将Integer转换为二进制字符串代表的方法。

JDK Integer.toBinaryString 。

老派位掩蔽技术。

1.将Int转换为Binary Integer.toBinaryString

1.1此Java示例尝试将int转换为二进制字符串表示形式。

int input = 10;

String result = Integer.toBinaryString(input);

System.out.println(result); // 1010

输出量

Terminal

1010

1.2 Integer.toBinaryString的输出缺少零填充,我们可以使用String.Format和replaceAll改进或漂亮地打印二进制字符串。

int input = 10;

String result = Integer.toBinaryString(input);

String resultWithPadding = String.format("%32s", result).replaceAll(" ", "0"); // 32-bit Integer

System.out.println(resultWithPadding);

输出量

Terminal

00000000000000000000000000001010

1.3此Java示例使用分隔符进一步改进了二进制格式。

IntToBinaryExample1.java

package com.mkyong.crypto.bytes;

import java.util.ArrayList;

import java.util.List;

import java.util.stream.Collectors;

public class IntToBinaryExample1 {

public static void main(String[] args) {

int input = 10;

String result = Integer.toBinaryString(input);

String resultWithPadding = String.format("%32s", result).replaceAll(" ", "0");

System.out.println(resultWithPadding);

System.out.println(printBinary(resultWithPadding, 8, " | ")); // 00000000 | 00000000 | 00000000 | 00001010

System.out.println(printBinary(resultWithPadding, 4, " ")); // 0000 0000 0000 0000 0000 0000 0000 1010

}

public static String printBinary(String binary, int blockSize, String separator) {

Listresult = 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

00000000000000000000000000001010

00000000 | 00000000 | 00000000 | 00001010

0000 0000 0000 0000 0000 0000 0000 1010

2.将Int转换为Binary(位掩码)

2.1此Java示例使用位掩码从整数生成二进制字符串。

StringBuilder result = new StringBuilder();

for (int i = 31; i >= 0; i--) {

int mask = 1 << i;

result.append((number & mask) != 0 ? "1" : "0");

}

在按位与运算中,只有1 & 1为1 。

1 & 1 = 1

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0

2.2例如, int 10是一个32位整数,在内部,计算机将其视为0000 1010 。 这个想法是我们循环32次,每次创建一个新的32位int 1 << loop - 1 ,并与int 10进行按位与运算,如果结果不等于零,则附加一个附加零。

请参阅以下模式:

# Each loop will move the bit from the left side to the right side by 1 bit.

# loop 1

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

10000000 | 00000000 | 00000000 | 00000000 = 1 << 31

=

00000000 | 00000000 | 00000000 | 00000000 = 0 (result)

# loop 2

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

01000000 | 00000000 | 00000000 | 00000000 = 1 << 30

=

00000000 | 00000000 | 00000000 | 00000000 = 0 (result)

# fast forward...3...28

# loop 29

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

00000000 | 00000000 | 00000000 | 00001000 = 1 << 3

=

00000000 | 00000000 | 00000000 | 00001000 = 1 (result)

# loop 30

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

00000000 | 00000000 | 00000000 | 00000100 = 1 << 2

=

00000000 | 00000000 | 00000000 | 00000000 = 0 (result)

# loop 31

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

00000000 | 00000000 | 00000000 | 00000010 = 1 << 1

=

00000000 | 00000000 | 00000000 | 00000010 = 1 (result)

# loop 32

00000000 | 00000000 | 00000000 | 00001010 = 10

& = Bitwise AND

00000000 | 00000000 | 00000000 | 00000001 = 1 << 0

=

00000000 | 00000000 | 00000000 | 00000000 = 0 (result)

这是完整的示例。

IntToBinaryExample2.java

package com.mkyong.crypto.bytes;

import java.util.ArrayList;

import java.util.List;

import java.util.stream.Collectors;

public class IntToBinaryExample2 {

public static void main(String[] args) {

int input = 10;

String result = convertIntToBinaryString(input);

String resultWithPadding = String.format("%32s", result).replaceAll(" ", "0");

System.out.println(printBinary(resultWithPadding, 8, " - "));

}

public static String convertIntToBinaryString(int number) {

StringBuilder result = new StringBuilder();

for (int i = 31; i >= 0; i--) {

int mask = 1 << i;

result.append((number & mask) != 0 ? "1" : "0");

}

return result.toString();

}

public static String printBinary(String binary, int blockSize, String separator) {

Listresult = 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

00000000 - 00000000 - 00000000 - 00001010

参考文献

维基百科–位屏蔽

维基百科-按位与

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

Oracle – Java原始数据类型

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值