Integer源码 转2进制转16进制
其中有一个私有方法,toUnsignedString(int i, int shift) 是为
public static String toHexString(int i) {
return toUnsignedString(i, 4);
}
public static String toBinaryString(int i) {
return toUnsignedString(i, 1);
}
着两个方法服务的。
final static char[] digits = {'0' , '1' , '2' , '3' , '4' , '5' ,'6' , '7' , '8' , '9' , 'a' , 'b' ,'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,'o' , 'p' , 'q' , 'r' , 's' , 't' ,'u' , 'v' , 'w' , 'x' , 'y' , 'z'};private static String toUnsignedString(int i, int shift) {char[] buf = new char[32];int charPos = 32;int radix = 1 << shift;int mask = radix - 1;do {buf[--charPos] = digits[i & mask];i >>>= shift;} while (i != 0);return new String(buf, charPos, (32 - charPos));}
以559转为16进制为例:
559 二进制位 10 0010 1111;
toUnsignedString(i, 4);
1.取4位计算对应的16进制字符;
2.然后右移4位,前面补0;
重复1 ,2;
----------
mask = 15,对应 1111;
10 0010 1111 & mask = 1111 -> 15 -> digits[15] -> f;
右移4位后 00 0010 0010 & mask = 0010 -> 2 -> digits[2] -> 2;
右移4位后 00 0000 0010 & mask = 0010 -> 2 -> digits[2] -> 2;
----> 22f
同样如果转为8进制则为:toUnsignedString(i, 3);
感觉自己写的算法都弱爆了
Integer源码 转2进制转16进制相关推荐
- Android源码中的FLAG为何使用16进制
1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /*** This view does not want keystr ...
- 由自动装箱和拆箱引发我看Integer源码
背景和问题 在看别人整理的资料时,看到如下一段代码: package com.sitech.test;/** * 自动装箱和拆箱 jdk1.6 * @author liaowp * */public ...
- 把ASCII码的字符串转为数字的16进制
/* 函数名称:AsciiStrToHexArray 功能:把ASCII码的字符串转为数字的16进制 参数dst:存储16进制数组数据指针 参数src:存储ASCII码的字符串指针 返回值:16进制的 ...
- Java 中 Integer 源码学习之缓存池了解
Java 中 Integer 源码学习之缓存池了解 面试题 new Integer(123) 与 Integer.valueOf(123) 的区别? new Integer(123) 每次都会新建一个 ...
- 10进制和16进制 数字和ASCII码互转
10进制和16进制数转ASCII码 int hex2ascii(unsigned char *hex, int hex_len, char *text) {char buffer[20];int cn ...
- C# 中10进制、16进制及其ASCII码之间转化
C#的进制转换主要用在串口通讯时候 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采 ...
- BIN,BCD,ASCII码分别对应的Hex(16进制)数
BIN,BCD,ASCII码分别对应的Hex(16进制)数 以十进制的 56 为例: BIN 码 对应二进制数为 0011 1000 对应Hex数据为 0x38 BIN码就是二进制数: 压缩BCD 码 ...
- Python中int、str、bytes相互转化,还有2进制、16进制表示,你想要的都在这里了
文章目录 前言 数据类型转化 int -> str 使用 str() 函数 使用 format() 函数 使用 hex() 转换成16进制形式 使用 bin() 转换成2进制形式 str -&g ...
- python16进制转10进制_python 字节串及10进制,16进制相关转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...
- C++10进制转16进制
10进制转16进制是常用的算法,一般利用循环做除法求余数的方法来求解.由于先求出来余数要最后输出,给这个问题增加了难度,在学习过程中发现一个利用字符串巧妙解决该问题的方法: #include<i ...
最新文章
- CSS有效的编写代码
- Knockout应用开发指南(完整版) 目录索引
- php 日志处理类,php中自定义日志处理类(类似于java中的log4j)
- 防止网络请求(或其他回调)引用,从而造成内存泄漏
- 一些恶意软件的分析收集整理
- [云炬创业管理笔记]第二章成为创业者讨论2
- Python中安装moveit_commander,顺带解决rospy模块未安装问题
- virt-manager 使用 shh 远程访问配置方法
- inchat库下载 python_Linux 环境下安装 Python3 的操作方法
- iPhone11系列新配色售空 暗夜绿溢价超过500元
- java中 Double和double区别
- php居中函数,PHP实现的自定义图像居中裁剪函数示例
- 目前国内的跨境收款通道有哪些还不错的?
- swash编译安装教程
- python中match的六种用法,python 正则函数match()和search()用法示例
- 一般计算机电源多大,【小知识】台式机电源选多大才够?
- 2022年网络安全行业的几个关注点
- Office 2016安装
- 一行代码解决vue数据量大卡顿问题
- Hadoop生态环境搭建