当前位置: 首页 > news >正文

Java 16进制 10进制 2进制数 相互的转换

在 Java 中,进行进制之间的转换时,除了功能的正确性外,效率和安全性也很重要。为了确保高效和相对安全的转换,我们通常需要考虑:

  1. 性能:使用内置的转换方法,如 Integer.toHexString()Integer.toBinaryString() 等,通常比手动实现转换更高效。
  2. 安全性:避免溢出和处理负数或符号位的问题。

以下是针对 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. 高效与安全性考虑

  1. 高效性
    • 使用 Integer.parseInt()Integer.toBinaryString() 等标准库方法,通常比手动实现进制转换更高效。
    • 不需要对负数特别处理,因为 parseInt()toBinaryString() 默认已经处理了符号位。
  2. 安全性
    • 防止溢出Integer.parseInt() 方法的上限是 Integer.MAX_VALUE(即 2147483647)。如果你需要更大的数字,可以使用 Long.parseLong()BigInteger
    • 避免负数问题Integer.toBinaryString()Integer.toHexString()Integer.toString() 等方法都已自动处理负数的转换,适用于常见的整数类型。
    • 使用大数字:对于超过 32 位的数字(比如 Long 类型或更大的数字),可以使用 LongBigInteger 来处理,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进制
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
A101010
B111011
C121100
D131101
E141110
F151111
101610000
111710001
121810010
131910011
142010100
152110101
162210110
172310111
182411000
192511001
1A2611010
1B2711011
1C2811100
1D2911101
1E3011110
1F3111111
2032100000
2133100001
2234100010
2335100011
2436100100
2537100101
2638100110
2739100111
2840101000
2941101001
2A42101010
2B43101011
2C44101100
2D45101101
2E46101110
2F47101111
3048110000
3149110001
3250110010
3351110011
3452110100
3553110101
3654110110
3755110111
3856111000
3957111001
3A58111010
3B59111011
3C60111100
3D61111101
3E62111110
3F63111111

相关文章:

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.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...