当前位置:首页 > 编程教程 > java技术文章 > java将整数转化成二进制代码

java将整数转化成二进制实例讲解

  • 发布时间:
  • 作者:码农之家
  • 点击:344

这篇文章主要知识点是关于java、整数、二进制、java 二进制数据与16进制字符串相互转化方法 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Java语言程序设计与数据结构:基础篇
  • 类型:Java大小:259 MB格式:PDF作者:梁勇
立即下载
OpenCV3.0 Computer Vision with Java
  • 类型:OpenCV大小:7.42 MB格式:PDF作者:Daniel Lélis Baggio
立即下载

java将整数转化成二进制代码

将一个整数转化成二进制的方法:

1 方法1:使用BigInteger类:

   @Test 
public void test1(){ 
  BigInteger b=new BigInteger("10");//1010 
  System.out.println(b.toString(2));//0 
   
  b=new BigInteger("1"); 
  System.out.println(b.toString(2));//1 
   
  b=new BigInteger("255"); 
  System.out.println(b.toString(2));//11111111 
   
  b=new BigInteger("254"); 
  System.out.println(b.toString(2));//11111110 
} 

2 方法2:使用Integer.toBinaryString():

   @Test 
public void test(){ 
  String str2 = Integer.toBinaryString(0); 
  System.out.println(str2);//0 
   
  str2 = Integer.toBinaryString(1); 
  System.out.println(str2);//1 
   
  str2 = Integer.toBinaryString(255); 
  System.out.println(str2);//11111111 
} 

如上,确实能够将一个整数转化成二进制,但是不足之处在于当一个数被转化成二进制时不足8位时,不会自动补0;
所以要获得8位二进制数时,要加上判断:

@Test 
public void test3(){ 
   
  String tempStr = ""; 
  String str2 = Integer.toBinaryString(10); 
    //判断一下:如果转化为二进制为0或者1或者不满8位,要在数后补0 
    int bit = 8-str2.length(); 
    if(str2.length()<8){ 
      for(int j=0; j<bit; j++){ 
      str2 = "0"+str2; 
      } 
    } 
    tempStr += str2; 
    System.out.println(tempStr); 
} 

 

java 二进制数据与16进制字符串相互转化方法

二进制数据一般输入的格式是0x45, 0x3a, 0xc3, 这种数据格式看起来是16进制的字符串,但是实际上在存储的时候每个都对应一个字节,比如0x45的二进制字节就是0100 0101,对应的16进制字符串就是0x45。实际编程过程中,经常遇到这两种格式的相互转化,在此记录一下代码。

二进制数据转化为16进制字符串(中间加的‘:'还有‘;'是为了查看下标,也可以自行去掉):

 public static String bytesToHexString(byte[] src){
  StringBuilder stringBuilder = new StringBuilder();
  if (src == null || src.length <= 0) {
   return null;
  }
  for (int i = 0; i < src.length; i++) {
   int v = src[i] & 0xFF;
   String hv = Integer.toHexString(v);
 
   stringBuilder.append(i + ":");
 
   if (hv.length() < 2) {
    stringBuilder.append(0);
   }
   stringBuilder.append(hv + ";");
  }
  return stringBuilder.toString();
 }

16进制字符串转化为二进制数据:

public static byte[] hexStringToByte(String hex) {
  int len = (hex.length() / 2);
  byte[] result = new byte[len];
  char[] achar = hex.toCharArray();
  for (int i = 0; i < len; i++) {
   int pos = i * 2;
   result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
  }
  return result;
 }
 
 private static byte toByte(char c) {
  byte b = (byte) "0123456789abcdef".indexOf(c);
  return b;
 }

以上这篇java 二进制数据与16进制字符串相互转化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

相关电子书
学习笔记
网友NO.705848

Java版超大整数阶乘算法代码详解-10,0000级

当计算超过20以上的阶乘时,阶乘的结果值往往会很大。一个很小的数字的阶乘结果就可能超过目前个人计算机的整数范围。如果需求很大的阶乘,比如1000以上完全无法用简单的递归方式去解决。在网上我看到很多用C、C++和C#写的一些关于大整数阶乘的算法,其中不乏经典但也有很多粗糙的文章。数组越界,一眼就可以看出程序本身无法运行。转载他人文章的时候,代码倒是仔细看看啊。唉,粗糙。过年了,在家闲来蛋疼,仔细分析分析,用Java实现了一个程序计算超大整数阶乘。思想取自网上,由我个人优化和改进。 这个方法采用“数组进位”算法。在超越计算机变量取值范围的情况下,将多位数相乘转化为一位数相乘。如11!=39916800,若需求12的阶乘,则需要将39916800与12相乘,可利用乘法分配率。乘法竖式如下图所示: 使用一个数组来保存阶乘每……

网友NO.459582

java判断字符串是正整数的实例

实例如下所示: public static boolean isPureDigital(String string) { if (isBlank(string)) return false; String regEx1 = "\\d+"; Pattern p; Matcher m; p = Pattern.compile(regEx1); m = p.matcher(string); if (m.matches()) return true; else return false; } 以上这篇java判断字符串是正整数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.155403

Java求解两个非负整数最大公约数算法【循环法与递归法】

本文实例讲述了Java求解两个非负整数最大公约数算法。分享给大家供大家参考,具体如下: 代码功能: 1.Java实现(完整源码附测试用例); 2.求解两个非负整数p,q(p=q)的最大公约数; 3.循环法 以及 递归法两种求解思路; 完整源码: /* GCD:Greateast Common Divisor */public class GCD{ public static void main(String args[]){ /* Test Case */ int p = 32; int q = 24; System.out.println("The greatest divisior of "+p+" and "+q+" is \n"+ "[ gcd1 ] : "+gcd1(p,q)+"\n"+"[ gcd2 ] : "+ gcd2(p,q)); } // (q % gcd ==0 AND p% gcd ==0 [gcd from q to 1]) public static int gcd1(int p,int q){ int gcd=1; int d=q; while(d0){ d--; if(q%d==0 p%d==0){ gcd = d; break; } } return gcd; } // gcd(p,q)=gcd(q,p%q)[if q=0,gcd=p] public static int gcd2(int p,int q){ if(q==0) return p; int r = p%q; //System.out.println("("+q+","+r+")"); return gcd2(q,r); }} 运行截图: 代码解释: 循环法 gcd1(p,q) 自然语言描述 :循环法求解……

网友NO.103867

Java中从键盘输入多个整数的方法

例题:求数列的和 分别输入两个整数n,m,中间以空格隔断,n 为数列第一项,后面各项均为前一项的开根号,求前m项的和。 第一种从键盘输入并读取的方式:sc.hasNextInt() 函数和sc.nextInt()函数 hasNextInt() 判断当前输入的是否是整数 import java.util.Scanner;import java.lang.Math.*; class Test1{public static void main(String [] args){ Scanner sc=new Scanner(System.in); int m; double n,result; while(sc.hasNextInt()){ n=sc.nextInt(); m=sc.nextInt(); result=0; for(int i=0; im; i++){ result += n; n = Math.sqrt(n); } System.out.printf("%.2f",result); } } } 第二种方式:sc.trim()函数 和sc.split()函数 sc.trim() 去掉字符串首尾空格 sc.split() 按照指定字符(串)或正则去分割某个字符串 ,结果以字符串数组形式返回 import java.util.Scanner;import java.lang.Math.*; class Test{public static void main(){Scanner sc=new Scanner(System.in);String input=sc.nextLine();input=input.trim();//去……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com

idea注册码