java十进制转二进制代码怎么解决?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java十进制转二进制代码怎么解决?相关的知识,希望对你有一定的参考价值。
参考技术A下面是根据十进制数转二进制数的算法所写的一段Java程序示例代码:
import java.math.BigDecimal;
public class Test
public static void main(String[] args)
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十进制数"+d+"转成二进制数为:"+s);
/**
* 十进制数转二进制数
* @param d 十进制数
* @return 十进制数转换成二进制的字符串
*/
public String decimal2BinaryStr(double d)
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
/**
* 十进制整数部分转二进制数
* @param d 十进制数
* @return 十进制整数部分转换成二进制的字符串
*/
public String decimal2BinaryStr_Inte(double d)
// return Integer.toBinaryString((int)d);
/*
* 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,
* 但为了展示十进制转二进制的算法,现选择以下程序来进行转换
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true)
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0)
result+=" ";
if(inte==0)
while(index%4!=0)
result+="0";
index++;
break;
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i>0; i--)
cc[cc.length-i] = c[i-1];
return new String(cc);
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d)
return decimal2BinaryStr_Deci(d, 0);
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @param scale 小数部分精确的位数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d, int scale)
double deci = sub(d,(long)d);
if(deci==0)
return "";
//为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度
if(scale==0)
scale = (String.valueOf(deci).length()-2)*4;
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true)
if(deci==0 || index==scale)
while(index%4!=0)
inteStr.append("0");
index++;
break;
if(index==0)
inteStr.append(".");
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0)
inteStr.append(" ");
return inteStr.toString();
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2)
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
例如将十进制数1234.5转成二进制数为:0100 1101 0010.1000
java怎么将二进制转化成字符串
import java.io.UnsupportedEncodingException;import java.util.Arrays;
/*
* String(byte[] bytes, String charsetName):通过指定的字符集解码字节数组
* byte[] getBytes(String charsetName):使用指定的字符集合把字符串编码为字节数组
*
* 编码:把看得懂的变成看不懂的
* String -- byte[]
*
* 解码:把看不懂的变成看得懂的
* byte[] -- String
*
* 举例:谍战片(发电报,接电报)
*
* 码表:小本子
* 字符 数值
*
* 要发送一段文字:
* 今天晚上在老地方见
*
* 发送端:今 -- 数值 -- 二进制 -- 发出去
* 接收端:接收 -- 二进制 -- 十进制 -- 数值 -- 字符 -- 今
*
* 今天晚上在老地方见
*
* 编码问题简单,只要编码解码的格式是一致的。
*/
public class StringDemo
public static void main(String[] args) throws UnsupportedEncodingException
String s = "你好";
// String -- byte[]
byte[] bys = s.getBytes(); // [-60, -29, -70, -61]
// byte[] bys = s.getBytes("GBK");// [-60, -29, -70, -61]
// byte[] bys = s.getBytes("UTF-8");// [-28, -67, -96, -27, -91, -67]
System.out.println(Arrays.toString(bys));
// byte[] -- String
String ss = new String(bys); // 你好
// String ss = new String(bys, "GBK"); // 你好
// String ss = new String(bys, "UTF-8"); // ???
System.out.println(ss);
参考技术A 最后文件是用java自带的DatatypeConverter 进行转换。要么HEX,要么Base64
本例是把一个文件读出来,表示成hex文本字符串,(一般以XML这类文本协议进行远距离传输),再把hex文本字符串还原成二进制数。 FileUtil 为hutool的工具包
File file = new File("d://temp/aa.pdf");
byte[] bytes = FileUtil.readBytes(file);
String fileStr = DatatypeConverter.printHexBinary(bytes);
byte[] fileBytes = DatatypeConverter.parseHexBinary(fileStr);
FileUtil.writeBytes(fileBytes, "d://temp/aa/aa.pdf");
以上是关于java十进制转二进制代码怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章
java中如何声明一个十六进制的字符串,或者说,怎么发送一个十六进制数据?