java 如何显示 二进制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何显示 二进制相关的知识,希望对你有一定的参考价值。

Integer.toBinaryString(3)

把3转换为11
但是我现在需要统一成8位二进制,就是
0000 0011
这个该如何实现啊?

java显示二进制,主要是使用基本类型的包装类的tobinaryString类型进行转换,代码如下:

package com.qiu.lin.he;

import java.text.ParseException;

public class Ceshi 
public static void main(String[] args) throws ParseException 

int i = 8;
        //使用包装类的toBinaryString转换成二进制
System.out.println(Integer.toBinaryString(i));


运行结果如下

参考技术A String format = String.format("%08d",Integer.parseInt(Integer.toBinaryString(3)));
System.out.println(format);

参考技术B String.format("%08d",Integer.toBinaryString(3));追问

执行时报错了

追答

你Interger都没有toBInaryString这个方法,肯定报错喇。。。
这个方法是你自己写的。。。

追问

真有这个方法,有API为证

你可以试试,这么写真的有错误

追答

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)

自己看文档吧。。。

本回答被提问者采纳
参考技术C /**
 * 将一个int数字转换为二进制的字符串形式。
 * @param num 需要转换的int类型数据
 * @param digits 要转换的二进制位数,位数不足则在前面补0
 * @return 二进制的字符串形式
 */
public static String toBinary(int num, int digits) 
    String cover = Integer.toBinaryString(1 << digits).substring(1);
    String s = Integer.toBinaryString(num);
    return s.length() < digits ? cover.substring(s.length()) + s : s;

参考技术D private String PrintBinary(int x, int iMaxLen)
String StrFormat = String.format("%s",Integer.toBinaryString(x));
int iLength=StrFormat.length();
for(int i=0;i<iMaxLen-iLength;i++)
StrFormat="0"+StrFormat;

return StrFormat;

private String PrintBinary(int x)
int iMaxLen = 32;
return PrintBinary(x, iMaxLen);

用PrintBinary(数字)或PrintBinary(数字,位数长度)

如何在 Java 中显示十六进制/字节值

【中文标题】如何在 Java 中显示十六进制/字节值【英文标题】:How to display a hex/byte value in Java 【发布时间】:2015-06-15 17:36:12 【问题描述】:
int myInt = 144;
byte myByte = /* Byte conversion of myInt */;

输出应该是myByte : 90(十六进制值144)。

所以,我做到了:

byte myByte = (byte)myInt;

我得到了myByte : ffffff90 的输出。 :(

我怎样才能摆脱那些ffffffs?

【问题讨论】:

为什么应该是90?你没有在那里进行十六进制转换。值 144 超出 byte 范围并将溢出,因此该值(负数)。 不幸的是,这现在被标记为错误问题的重复,因为问题不是关于如何将 int 转换为 byte(尽管标题不正确),而是关于如何在将byte 转换回int 时去掉额外的 1 位。投票重新开放 - 也许它可以作为更合适问题的副本而关闭。 如果我搞砸了,我很抱歉 :),我是一名 C++ 开发人员和 java 新手,在 C++ 中我知道如何做到这一点,int -> unsigned int -> unsigned char,但是在 JAVA 中我真的很困惑。 【参考方案1】:

byte 是有符号类型。它的值在 -128 到 127 的范围内; 144 不在此范围内。 Java 中没有无符号字节类型。

如果您使用的是 Java 8,将其视为 0 到 255 范围内的值的方法是使用 Byte.toUnsignedInt

String output = String.format("%x", Byte.toUnsignedInt(myByte));

(我不知道你如何格式化十六进制输出的整数。没关系。)

Pre-Java 8,最简单的方法是

int byteValue = (int)myByte & 0xFF;
String output = String.format("%x", byteValue);

但在您执行上述任一操作之前,请确保您确实想要使用byte。很有可能你不需要。如果你想表示值 144,你不应该使用byte,如果你不需要的话。只需使用int

【讨论】:

【参考方案2】:

谢谢@ajb 和@smit,我用了两个答案,

int myInt = 144;

byte myByte = (byte) myInt;

char myChar = (char) (myByte & 0xFF);

System.out.println("myChar :"+Integer.toHexString(myChar));

o/p,

myChar : 90

【讨论】:

【参考方案3】:

使用以下code:

int myInt = 144;
byte myByte = (byte)myInt;
System.out.println(myByte & 0xFF);

在 Java 8 中,如 ajb 所说,使用Byte.toUnsignedInt(myByte)

【讨论】:

以上是关于java 如何显示 二进制的主要内容,如果未能解决你的问题,请参考以下文章

java后台怎么把数据库二进制图片传到前台显示?

Java 如何 解析二进制协议?

如何在Java中将字节数组转换为十六进制格式

Java TCP socket通信,如何实现发送十六进制值,并在数据接收窗口中显示这些数据对应的字符串,非常感谢!

请问VB如何读写二进制文件

JAVA Socket TCP InputStream输入流转换成可读的数据如何做?