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));
运行结果如下
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...)
自己看文档吧。。。
* 将一个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
的输出。 :(
我怎样才能摆脱那些ffffff
s?
【问题讨论】:
为什么应该是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 如何显示 二进制的主要内容,如果未能解决你的问题,请参考以下文章