1、数组的进制转换

package com.vnb.javabase;public class ArrayTest {//16进制数转二进制public static void toHex(int num){//& 两两为1即为1//>>>无符号右移/*** eg.60*       0000-0000 0000-0000 0000-0000 0011-1100   60的二进制表示* &     0000-0000 0000-0000 0000-0000 0000-1111   15的二进制表示* &后的值   0000-0000 0000-0000 0000-0000 0000-1100          值为12即16进制的C*/StringBuffer sb = new StringBuffer();for (int i = 0; i < 8; i++) {int temp = num & 15;if(temp>9){sb.append((char)(temp-10+'A'));//强转成16进制}else{sb.append(temp);}num = num >>>4;}System.out.println(sb.reverse());//0000003C}//查表法转换成16进制/*** 0 1 2 3 4 5 6 7 8 9 A  B  C  D  E  F  16进制元素* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15* 思路:把0到F的元素存到表里,0到15都有对应下标,所以将其建立一一对应关系,&15后得到的结果C直接去表里查找对应元素即可* 建表:可以通过数组形式定赢,下标自动对应A到F* */private static void toHexTable(int num){char[] cha = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//用数组存放获取到的16进制结果char[] arr = new char[8];int pos = arr.length;while(num!=0) { //右移后,会有很多0, 0000-0000 0000-0000 0000-0000 0000-1100,只取有效位即可,2进制0对应的10进制也是0int temp = num & 15;arr[--pos] = cha[temp];//直接从角标中获取值cha[temp]即为其16进制数,数组倒着放--pos,就不用反转数组cha[temp]num = num >>> 4;}System.out.println("pos:"+pos);//获取到cha[temp]后反转即可打印正确的charfor (int i = pos; i < arr.length; i++) {System.out.print(arr[i]+",");}}//查表法,将16进制转为2进制//首先定义2进制的表,再定义临时存储的容器private static void toBinary(int num){char[] chs = {'0','1'};char[] arr = new char[32];int pos = arr.length;while(num!=0) { int temp = num & 1;arr[--pos] = chs[temp];num = num >>> 1;}for (int i = pos; i < arr.length; i++) {System.out.print(arr[i]+",");}}//优化转化16进制到2进制,和2进制到16进制方法//相同点:都有一个临时表,都有临时容器(大的32可以包含小的8位),都要位移,都有指针//不同点:容器大小,位移数private static void convertNum(int num,int offset,int baseNum){char[] cha = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[32];int pos = arr.length;while(num!=0) { int temp = num & baseNum;arr[--pos] = cha[temp];num = num >>> offset;}for (int i = pos; i < arr.length; i++) {System.out.print(arr[i]);}}public static void main(String[] args) {//toHex(60);//toHexTable(60);//toBinary(-6);convertNum(6,1,1);//2进制 System.out.println("");convertNum(60,4,15);//16进制System.out.println("");convertNum(60,3,7);//8进制}}

结果输出:

110
3C
74

2、二维数组在堆中的存放

java实现2进制转16进制,16进制转2进制(通过查表法和强转实现)相关推荐

  1. java的代码之进制转换(2,8,16与10进制转换)

    文章目录 一.2,8,16进制转换成10进制 二.10进制转换成2,8,16进制返回STRING 三.自己写的十进制转换成十六进制 一.2,8,16进制转换成10进制 使用Integer.parseI ...

  2. java进制转换、字符串与16进制互转/数字进制互转

    目录 十进制转其他进制 其他进制数字转十进制 字符串与16进制相互转换 十进制转其他进制 /*** 十进制转其他进制*/public static String conversion(Integer ...

  3. 16进制转char_常州市赛题解:小X转进制

    小X喜欢研究进制转换.在了解了进制转换的一般流程后,小X突然想起了以前学过的回文数(正着读倒着读都一样的数),于是开始思考一个奇怪的问题:1到N 中有多少个整数的平方在M进制下是回文数呢? 小X随手列 ...

  4. C++ 文件读写实战——2进制文件查看器(16进制显示)

    简单的二进制阅读器(或者说16进制查看器) 在学习BMP位图的构成时,对网上的收费16进制查看器很是烦躁,notepad查看时卡到放弃人生 因为只是为了初步学习图片知识,以及查看2进制文件内部构成的话 ...

  5. 29.【C语言】进制转换:10转16、10转2、2转10、16转10(Demo)

    算法思想: 在对于10转其他进制可以利用短除法的思想,将10进制数转换成其他进制数.,如下图所示,x为进制,num为十进制数. 1.10进制转16进制主体部分 void DecToHex(int nu ...

  6. 用查表法写c语言程序,C语言day07-15进制查表法

    #include void printfBinary(int value); void printfBunary2(int value); void printOct(int value); // 8 ...

  7. 计算机基础进制的换算教案,计算机系统基础(二)数值进制和进制转换

    http://kaito-kidd.com/2018/07/17/computer-system-binary-octal-hexadecimal-decimal/#more # 信息的二进制编码 在 ...

  8. 数组---进制转换(查表法)

    package com.shuzu; public class shuzuJinZhiZhuanHuan { * @param a 所要转换的十进制数,b 不同进制所要与(&)的数不同,wei ...

  9. JAVA-初步认识-第五章-数组-常见操作-进制转换(查表法)

    一. 数组的常见应用 数组在开发中什么时候用? 举例说明: 需求:获取一个整数的十六进制表现形式(要明白十六进制的表现形式是什么样子,有数字有字母) 本来应该返回一个字符串,但是还没有学到返回字符串, ...

最新文章

  1. 【Android 电量优化】电量优化 ( JobScheduler | JobService | AsyncTask )
  2. 辗转相除法求多项式的最大公因式
  3. 深度学习之生成对抗网络(2)GAN原理
  4. 怎么安装redhat linux操作系统,红帽RedHat Linux5系统安装指南
  5. 企业私有云部署im,视频服务
  6. jq追加元素最前面_DNF:哈林史诗百鬼夜行最理想的首饰搭配,海博伦应选贤者之欲...
  7. Activity是如何挂载Pargment的Day35
  8. 如何下载火山安卓软件开发平台
  9. 极品抓鸡36课------8080端口入侵笔记
  10. 计算机网络(第七版)部分课后习题含答案
  11. gps面积测量仪手机版下载安装_GPS面积测量仪手机版下载
  12. oracle 范鑫_快速理解数据库中的索引(Indexes in Database)
  13. Discuz修改导读设置,显示更多热帖和精华帖
  14. 路由器的信号无法连接到服务器,无线路由器有信号却连不上怎么办
  15. TinyG 入门06
  16. 英语中的开音节,闭音节
  17. Delphi大师弗兰克·宝兰德(Frank Borland)回来了!
  18. 【离散数学】编程练习:求关系的传递闭包
  19. DNS --域名系统
  20. python窗口制作_python制作一个桌面便签软件

热门文章

  1. react router教程
  2. 802.11n PHY-MAC层帧结构解析
  3. 警惕!QQ盗号又出新招 不改密码只转移QQ币
  4. 「什么是REITs基金」一文说清楚REITs基金简介 如何配置REITs产品
  5. 2021最新 阿里云ECS的CPU100%排查
  6. word2vec关键词提取 python_如何从word2vec的Google预训练模型中提取单词向量?
  7. java学习体会论文_关于学习java的心得体会
  8. 记一次蚂蚁金服的面试经历
  9. 【DP专题】——jzoj 6305. 最小值
  10. 大学生学计算机打字速度,小学生计算机打字速度研究报告