Java 16进制 10进制 2进制数 相互的转换
在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑:
- 性能:使用内置的转换方法,如
Integer.toHexString()、Integer.toBinaryString()等,通常比手动实现转换更高效。 - 安全性:避免溢出和处理负数或符号位的问题。
以下是针对 16进制、10进制和2进制数的相互转换 的高效且相对安全的方法。
1. 十六进制(Hex) ↔ 十进制(Decimal)
十六进制到十进制: 使用 Integer.parseInt() 方法将十六进制字符串解析为十进制数字。
十进制到十六进制: 使用 Integer.toHexString() 方法将十进制数字转换为十六进制字符串。
示例代码:
public class BaseConversion {public static void main(String[] args) {// 十六进制到十进制String hex = "1A3F";int decimal = Integer.parseInt(hex, 16); // 使用 parseInt 方法将十六进制转为十进制System.out.println("Hex to Decimal: " + decimal);// 十进制到十六进制int decimalNum = 6703;String hexString = Integer.toHexString(decimalNum); // 使用 toHexString 方法将十进制转为十六进制System.out.println("Decimal to Hex: " + hexString.toUpperCase()); // 输出大写的十六进制}
}
输出:
Hex to Decimal: 6703
Decimal to Hex: 1A3F
2. 十六进制(Hex) ↔ 二进制(Binary)
十六进制到二进制: 首先将十六进制字符串转换为十进制,然后再转换为二进制。
二进制到十六进制: 首先将二进制字符串转换为十进制,然后再转换为十六进制。
示例代码:
public class BaseConversion {public static void main(String[] args) {// 十六进制到二进制String hex = "1A3F";int decimalFromHex = Integer.parseInt(hex, 16);String binaryFromHex = Integer.toBinaryString(decimalFromHex); // 十进制转二进制System.out.println("Hex to Binary: " + binaryFromHex);// 二进制到十六进制String binary = "1101000111111";int decimalFromBinary = Integer.parseInt(binary, 2); // 二进制转十进制String hexFromBinary = Integer.toHexString(decimalFromBinary); // 十进制转十六进制System.out.println("Binary to Hex: " + hexFromBinary.toUpperCase()); // 输出大写的十六进制}
}
输出:
Hex to Binary: 1101000111111
Binary to Hex: 1A3F
3. 十进制(Decimal) ↔ 二进制(Binary)
十进制到二进制: 使用 Integer.toBinaryString() 方法将十进制转换为二进制。
二进制到十进制: 使用 Integer.parseInt() 方法将二进制字符串解析为十进制数字。
示例代码:
public class BaseConversion {public static void main(String[] args) {// 十进制到二进制int decimal = 6703;String binary = Integer.toBinaryString(decimal); // 十进制转二进制System.out.println("Decimal to Binary: " + binary);// 二进制到十进制String binaryStr = "1101000111111";int decimalFromBinary = Integer.parseInt(binaryStr, 2); // 二进制转十进制System.out.println("Binary to Decimal: " + decimalFromBinary);}
}
输出:
Decimal to Binary: 1101000111111
Binary to Decimal: 6703
4. 高效与安全性考虑
- 高效性:
- 使用
Integer.parseInt()和Integer.toBinaryString()等标准库方法,通常比手动实现进制转换更高效。 - 不需要对负数特别处理,因为
parseInt()和toBinaryString()默认已经处理了符号位。
- 使用
- 安全性:
- 防止溢出:
Integer.parseInt()方法的上限是Integer.MAX_VALUE(即2147483647)。如果你需要更大的数字,可以使用Long.parseLong()或BigInteger。 - 避免负数问题:
Integer.toBinaryString()、Integer.toHexString()和Integer.toString()等方法都已自动处理负数的转换,适用于常见的整数类型。 - 使用大数字:对于超过 32 位的数字(比如
Long类型或更大的数字),可以使用Long或BigInteger来处理,BigInteger可以支持任意大小的整数。
- 防止溢出:
示例代码(使用 BigInteger 处理大数字):
import java.math.BigInteger;public class BaseConversion {public static void main(String[] args) {// BigInteger 适用于大数字转换String largeHex = "A3B2C4D5E6F7";BigInteger bigDecimal = new BigInteger(largeHex, 16); // 十六进制转大整数System.out.println("Large Hex to Decimal: " + bigDecimal);// 大整数转十六进制String bigHex = bigDecimal.toString(16); // 转回十六进制System.out.println("Large Decimal to Hex: " + bigHex.toUpperCase());}
}
输出:
Large Hex to Decimal: 181477716850295
Large Decimal to Hex: A3B2C4D5E6F7
总结:
- 十六进制 ↔ 十进制 使用
Integer.parseInt()和Integer.toHexString()。 - 十六进制 ↔ 二进制 使用
Integer.toBinaryString()和Integer.parseInt()。 - 十进制 ↔ 二进制 使用
Integer.toBinaryString()和Integer.parseInt()。 - 对于大数字,使用
BigInteger类来处理超过 32 位的进制转换。
这种方法是 高效 的,并且通过 Java 内置的类,已经相对安全地处理了符号和溢出的问题。
以下是16进制、10进制和2进制之间的转换表格。这个表格展示了常见的数值在这三种进制之间的相互转换。
16进制、10进制、2进制数转换表
| 16进制 | 10进制 | 2进制 |
|---|---|---|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |
| 10 | 16 | 10000 |
| 11 | 17 | 10001 |
| 12 | 18 | 10010 |
| 13 | 19 | 10011 |
| 14 | 20 | 10100 |
| 15 | 21 | 10101 |
| 16 | 22 | 10110 |
| 17 | 23 | 10111 |
| 18 | 24 | 11000 |
| 19 | 25 | 11001 |
| 1A | 26 | 11010 |
| 1B | 27 | 11011 |
| 1C | 28 | 11100 |
| 1D | 29 | 11101 |
| 1E | 30 | 11110 |
| 1F | 31 | 11111 |
| 20 | 32 | 100000 |
| 21 | 33 | 100001 |
| 22 | 34 | 100010 |
| 23 | 35 | 100011 |
| 24 | 36 | 100100 |
| 25 | 37 | 100101 |
| 26 | 38 | 100110 |
| 27 | 39 | 100111 |
| 28 | 40 | 101000 |
| 29 | 41 | 101001 |
| 2A | 42 | 101010 |
| 2B | 43 | 101011 |
| 2C | 44 | 101100 |
| 2D | 45 | 101101 |
| 2E | 46 | 101110 |
| 2F | 47 | 101111 |
| 30 | 48 | 110000 |
| 31 | 49 | 110001 |
| 32 | 50 | 110010 |
| 33 | 51 | 110011 |
| 34 | 52 | 110100 |
| 35 | 53 | 110101 |
| 36 | 54 | 110110 |
| 37 | 55 | 110111 |
| 38 | 56 | 111000 |
| 39 | 57 | 111001 |
| 3A | 58 | 111010 |
| 3B | 59 | 111011 |
| 3C | 60 | 111100 |
| 3D | 61 | 111101 |
| 3E | 62 | 111110 |
| 3F | 63 | 111111 |
相关文章:
Java 16进制 10进制 2进制数 相互的转换
在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑: 性能:使用内置的转换方法,如 Integer.toHexString()、Integer.…...
力扣动态规划-14【算法学习day.108】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
数据结构day02
1 线性表的定义和基本操作 1.1 线性表的定义 分析: 1.1.1 问题一:我们为什么探讨线性表的定义和基本操作 在研究数据结构时,需要重点关注三个方面:逻辑结构、物理结构以及数据的运算。在本节内容里,我们首先来介绍线…...
随笔 | 写在一月的最后一天
. 前言 这个月比预想中过的要快更多。突然回看这一个月,还有点不知从何提笔。 整个一月可以总结为以下几个关键词: 期许,保持期许出现休息 . 期许 关于期许,没有什么时候比一年伊始更适合设立目标和计划的了。但令人惭愧的…...
JVM方法区
一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分,但是一些简单的实现可能不会去进行垃圾收集或者进行压缩,方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样,是各个…...
一文读懂fgc之cms
一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…...
MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
介绍 在开发商品模块时,通常使用分表的方式进行查询以及关联。在通过表连接的方式进行查询。每个商品都有不同的分类,每个不同分类下面都有商品规格可以选择,每个商品分类对应商品规格都有自己的价格和库存。在实际的开发中应该给这些表进行…...
HTB:Administrator[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...
开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程
Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…...
FBX SDK的使用:基础知识
Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…...
VisionMamba安装
1.安装python环境 conda create -n mamba python3.10.13 -y conda activate mamba2.安装torch环境 conda install cudatoolkit11.8 -c nvidia pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url https://download.pytorch.org/whl/cu1183.安装其他包 c…...
h2oGPT
文章目录 一、关于 h2oGPT二、现场演示特点 三、开始行动安装h2oGPT拼贴画演示资源文档指南开发致谢为什么选择 H2O.ai?免责声明 一、关于 h2oGPT 使用文档、图像、视频等与本地GPT进行私人聊天。100%私人,Apache 2.0。支持oLLaMa、Mixtral、llama. cpp…...
Win10安装MySQL、Pycharm连接MySQL,Pycharm中运行Django
一、Windows系统mysql相关操作 1、 检查系统是否安装mysql 按住win r (调出运行窗口) 输入service.msc,点击【确定】 image.png 打开服务列表-检查是否有mysql服务 (compmgmt.msc) image.png 2、 Windows安装MySQL …...
使用Pygame制作“俄罗斯方块”游戏
1. 前言 俄罗斯方块(Tetris) 是一款由方块下落、行消除等核心规则构成的经典益智游戏: 每次从屏幕顶部出现一个随机的方块(由若干小方格组成),玩家可以左右移动或旋转该方块,让它合适地堆叠在…...
【Block总结】ODConv动态卷积,适用于CV任务|即插即用
一、论文信息 论文标题:Omni-Dimensional Dynamic Convolution作者:Chao Li, Aojun Zhou, Anbang Yao发表会议:ICLR 2022论文链接:https://arxiv.org/pdf/2209.07947GitHub链接:https://github.com/OSVAI/ODConv 二…...
RK3568 opencv播放视频
文章目录 一、opencv相关视频播放类1. `cv::VideoCapture` 类主要构造方法:主要方法:2. 视频播放基本流程代码示例:3. 获取和设置视频属性4. 结合 FFmpeg 使用5. OpenCV 视频播放的局限性6. 结合 Qt 实现更高级的视频播放总结二、QT中的代码实现一、opencv相关视频播放类 在…...
《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…...
【搜索回溯算法篇】:拓宽算法视野--BFS如何解决拓扑排序问题
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索(BFS)解决拓扑排…...
计算机网络 (61)移动IP
前言 移动IP(Mobile IP)是由Internet工程任务小组(Internet Engineering Task Force,IETF)提出的一个协议,旨在解决移动设备在不同网络间切换时的通信问题,确保移动设备可以在离开原有网络或子网…...
Elasticsearch+kibana安装(简单易上手)
下载ES( Download Elasticsearch | Elastic ) 将ES安装包解压缩 解压后目录如下: 修改ES服务端口(可以不修改) 启动ES 记住这些内容 验证ES是否启动成功 下载kibana( Download Kibana Free | Get Started Now | Elastic ) 解压后的kibana目…...
通义千问1.5-1.8B-Chat-GPTQ-Int4效果实测:对比Claude Code的代码生成能力
通义千问1.5-1.8B-Chat-GPTQ-Int4效果实测:对比Claude Code的代码生成能力 最近在尝试各种轻量级的代码生成模型,想看看在资源有限的情况下,哪个工具能更好地辅助日常开发。通义千问1.5-1.8B-Chat-GPTQ-Int4这个版本,因为做了量化…...
一文读懂水面无人艇:每个硬件模块到底负责什么
目录 一、水面无人艇完整系统 二、硬件搭配负责哪些功能 2.1 艇体模块:决定“能不能稳、能不能装、能不能扛风浪” 2.2 动力与航行执行模块:决定“怎么动” 2.3 导航传感器模块:决定“我现在在哪、朝哪、跑多快” 1)GPS / 北…...
从零开始:在VMware虚拟机中部署Janus-Pro-7B进行开发测试
从零开始:在VMware虚拟机中部署Janus-Pro-7B进行开发测试 想试试最新的AI大模型,但手头没有昂贵的独立GPU服务器?别担心,今天我们就来聊聊一个非常接地气的方案:用你手边的普通电脑,通过VMware虚拟机&…...
如何实现ElasticHQ与ElasticSearch 8.x的完美兼容:未来就绪的监控解决方案
如何实现ElasticHQ与ElasticSearch 8.x的完美兼容:未来就绪的监控解决方案 【免费下载链接】elasticsearch-HQ Monitoring and Management Web Application for ElasticSearch instances and clusters. 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearc…...
PyTorch Vision模型微调终极指南:从零到精通的迁移学习实战
PyTorch Vision模型微调终极指南:从零到精通的迁移学习实战 【免费下载链接】vision pytorch/vision: 一个基于 PyTorch 的计算机视觉库,提供了各种计算机视觉算法和工具,适合用于实现计算机视觉应用程序。 项目地址: https://gitcode.com/…...
智能邮件秘书:OpenClaw+Qwen3.5-9B自动分类与回复
智能邮件秘书:OpenClawQwen3.5-9B自动分类与回复 1. 为什么需要自动化邮件处理? 每天早晨打开邮箱时,看到堆积如山的未读邮件总会让人头皮发麻。作为一位经常需要处理客户咨询的技术顾问,我最高纪录是一天收到187封邮件。即使每…...
Python自动化办公:3种PDF水印处理技巧(附完整代码)
Python自动化办公:3种PDF水印处理技巧(附完整代码) 在数字化办公场景中,PDF文档的水印处理已成为高频需求。无论是合同归档需要添加版权标识,还是内部文件流转需清除敏感标记,传统手动操作既耗时又易出错。…...
AI辅助开发:用提示词让快马AI自动生成技术职级成长路径分析应用
AI辅助开发:用提示词让快马AI自动生成技术职级成长路径分析应用 最近在研究技术职级体系时,发现很多开发者对阿里P10这类高级职位的成长路径特别感兴趣。但手动整理这些信息费时费力,于是尝试用AI辅助开发的方式快速生成一个可视化分析工具。…...
OpenClaw:AI 权限治理的核心问题
子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…...
本地图片检索新方案:ImageSearch完全使用指南
本地图片检索新方案:ImageSearch完全使用指南 【免费下载链接】ImageSearch 基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享 项目地址: https://gitcode.com/gh_mirrors/im/ImageSearch 当你的电脑中存储了成千上万张图片&…...
