java实现2进制转16进制,16进制转2进制(通过查表法和强转实现)
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进制(通过查表法和强转实现)相关推荐
- java的代码之进制转换(2,8,16与10进制转换)
文章目录 一.2,8,16进制转换成10进制 二.10进制转换成2,8,16进制返回STRING 三.自己写的十进制转换成十六进制 一.2,8,16进制转换成10进制 使用Integer.parseI ...
- java进制转换、字符串与16进制互转/数字进制互转
目录 十进制转其他进制 其他进制数字转十进制 字符串与16进制相互转换 十进制转其他进制 /*** 十进制转其他进制*/public static String conversion(Integer ...
- 16进制转char_常州市赛题解:小X转进制
小X喜欢研究进制转换.在了解了进制转换的一般流程后,小X突然想起了以前学过的回文数(正着读倒着读都一样的数),于是开始思考一个奇怪的问题:1到N 中有多少个整数的平方在M进制下是回文数呢? 小X随手列 ...
- C++ 文件读写实战——2进制文件查看器(16进制显示)
简单的二进制阅读器(或者说16进制查看器) 在学习BMP位图的构成时,对网上的收费16进制查看器很是烦躁,notepad查看时卡到放弃人生 因为只是为了初步学习图片知识,以及查看2进制文件内部构成的话 ...
- 29.【C语言】进制转换:10转16、10转2、2转10、16转10(Demo)
算法思想: 在对于10转其他进制可以利用短除法的思想,将10进制数转换成其他进制数.,如下图所示,x为进制,num为十进制数. 1.10进制转16进制主体部分 void DecToHex(int nu ...
- 用查表法写c语言程序,C语言day07-15进制查表法
#include void printfBinary(int value); void printfBunary2(int value); void printOct(int value); // 8 ...
- 计算机基础进制的换算教案,计算机系统基础(二)数值进制和进制转换
http://kaito-kidd.com/2018/07/17/computer-system-binary-octal-hexadecimal-decimal/#more # 信息的二进制编码 在 ...
- 数组---进制转换(查表法)
package com.shuzu; public class shuzuJinZhiZhuanHuan { * @param a 所要转换的十进制数,b 不同进制所要与(&)的数不同,wei ...
- JAVA-初步认识-第五章-数组-常见操作-进制转换(查表法)
一. 数组的常见应用 数组在开发中什么时候用? 举例说明: 需求:获取一个整数的十六进制表现形式(要明白十六进制的表现形式是什么样子,有数字有字母) 本来应该返回一个字符串,但是还没有学到返回字符串, ...
最新文章
- python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...
- 如何在elasticsearch里面使用深度分页功能
- android 把assets 里面的图片文件输出到SD卡
- GDCM:DICOM转储到DshibaDTI的测试程序
- mysql视图表修复_mysql中含有视图数据库在恢复数据时视图变成数据表的解决方法...
- Cloud一分钟 | Gartner发布2018年第二季度全球服务器市场报告;中信银行联合腾讯云推出手机银行智能语音产品...
- 读书笔记 - 《我的美国之路》
- python在财务中的应用-利用python实现周期财务统计可视化
- AD DS 域控与成员计算机的时间一致性
- return的用法 java_Java中return用法.
- Php程序监控邮件提醒linux,Linux ping命令实现网络监控 并邮件提醒管理员
- AD域验证DirectoryEntry用法
- 杭电OJ 1720 进制处理
- 【132天】尚学堂高淇Java300集视频精华笔记(67-70)
- 高峰论坛:专家热议物联网行业如何迎风飞扬
- Bootstrap学习
- 查看服务器显卡GPU型号
- Android系统build.prop文件生成过程
- 【分析】CPU hotplug时进程上下文切换流程分析
- oracle表连接分析