- 浏览: 230166 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hl174:
写的不错,赞一个
在Java中字节与十六进制的相互转换主要思想有两点 -
l540151663:
也是个好方法
String为空判断
在Java中字节与十六进制的相互转换主要思想有两点:
1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示
我测试的Java代码如下:
运行后的输出结果如下:
str转换为十六进制:
B6FEBDF8D6C6D3EBCAAEC1F9BDF8D6C6BBA5D7AAB2E2CAD4
将str的十六进制文件转换为二进制并转为String:
二进制与十六进制互转测试
1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示
我测试的Java代码如下:
- public class Test01 {
- private static String hexStr = "0123456789ABCDEF";
- public static void main(String[] args)
- {
- String str = "二进制与十六进制互转测试";
- String hexString = BinaryToHexString(str.getBytes());
- System.out.println("str转换为十六进制:\n"+hexString);
- System.out.println("将str的十六进制文件转换为二进制并转为String:\n"+new String(HexStringToBinary(hexString)));
- }
- /**
- *
- * @param bytes
- * @return 将二进制转换为十六进制字符输出
- */
- public static String BinaryToHexString(byte[] bytes){
- String result = "";
- String hex = "";
- for(int i=0;i<bytes.length;i++){
- //字节高4位
- hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));
- //字节低4位
- hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));
- result +=hex;
- }
- return result;
- }
- /**
- *
- * @param hexString
- * @return 将十六进制转换为字节数组
- */
- public static byte[] HexStringToBinary(String hexString){
- //hexString的长度对2取整,作为bytes的长度
- int len = hexString.length()/2;
- byte[] bytes = new byte[len];
- byte high = 0;//字节高四位
- byte low = 0;//字节低四位
- for(int i=0;i<len;i++){
- //右移四位得到高位
- high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4);
- low = (byte)hexStr.indexOf(hexString.charAt(2*i+1));
- bytes[i] = (byte) (high|low);//高地位做或运算
- }
- return bytes;
- }
- }
public class Test01 { private static String hexStr = "0123456789ABCDEF"; public static void main(String[] args) { String str = "二进制与十六进制互转测试"; String hexString = BinaryToHexString(str.getBytes()); System.out.println("str转换为十六进制:\n"+hexString); System.out.println("将str的十六进制文件转换为二进制并转为String:\n"+new String(HexStringToBinary(hexString))); } /** * * @param bytes * @return 将二进制转换为十六进制字符输出 */ public static String BinaryToHexString(byte[] bytes){ String result = ""; String hex = ""; for(int i=0;i<bytes.length;i++){ //字节高4位 hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4)); //字节低4位 hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F)); result +=hex; } return result; } /** * * @param hexString * @return 将十六进制转换为字节数组 */ public static byte[] HexStringToBinary(String hexString){ //hexString的长度对2取整,作为bytes的长度 int len = hexString.length()/2; byte[] bytes = new byte[len]; byte high = 0;//字节高四位 byte low = 0;//字节低四位 for(int i=0;i<len;i++){ //右移四位得到高位 high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4); low = (byte)hexStr.indexOf(hexString.charAt(2*i+1)); bytes[i] = (byte) (high|low);//高地位做或运算 } return bytes; } }
运行后的输出结果如下:
str转换为十六进制:
B6FEBDF8D6C6D3EBCAAEC1F9BDF8D6C6BBA5D7AAB2E2CAD4
将str的十六进制文件转换为二进制并转为String:
二进制与十六进制互转测试
发表评论
-
Connected to the target VM, address: '127.0.0.1:52445', transport: 'socket' 错误:
2018-01-16 17:23 4760把 C:\Program Files (x86)\JetBra ... -
activemq Unrecognized Windows Sockets error: 10106: Socket creation failed
2018-01-16 17:27 94030-Nov-2017 22:45:52.892 严重 [ma ... -
Twitter的分布式自增ID算法snowflake (Java版)
2017-04-06 10:59 540概述 分布式系统中, ... -
gd总结20170104
2017-01-04 12:13 3361:tree获取选中的值,天窗项目-告警列表 $(functi ... -
java调优20161229
2016-12-29 20:03 4391:尽量减少对变量的重复计算 明确一个概念,对方法的调用,即 ... -
java2,8,10,16进制转换
2016-12-19 19:34 500A、十进制转换其他 十进制转成二进制 Integ ... -
java 修饰符
2016-12-06 22:20 406Java中共有四种访问限制修饰符:private,public ... -
java集合总结20161203
2016-12-03 15:26 5141:list 有序集合,元素 ... -
java常用集合总结
2016-12-03 14:55 531java常用集合总结 1、线程安全 线程安全就是说多线程访 ... -
设计模式总结1
2016-12-03 14:50 5811:像上转型================= 1.1定义抽象 ... -
pinyin4j
2016-12-02 15:40 420package cn.com.iotrust.common.u ... -
java IO流学习总结
2016-11-11 17:54 462Java中的流,可以从不同 ... -
JAVA泛型
2016-11-08 23:00 538泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是 ... -
Java常见集合的归纳总结
2016-11-08 21:58 501Java常见集合的归纳总结 首先来看看集合的关系: C ... -
maven总结20160925
2016-09-25 09:45 6711:安装后查看maven版本 mvn -version(或者 ... -
HTTP请求原理介绍
2016-09-20 19:19 617HTTP(HyperText Transfer Protoco ... -
post和get的区别
2016-09-10 22:35 4331. get是从服务器上获取数据,post是向服务器传送数据。 ... -
mysql 生成一个临时日历表
2016-08-26 13:32 997begin declare indexdate DATE; s ... -
tomcat内存设置
2016-08-18 17:46 368tomcat内存设置 -------------------- ... -
页面图表显示
2016-08-05 11:15 5581:百度echarts http://echarts.baid ...
相关推荐
在Java编程语言中,处理Unicode编码和十六进制字符转换是一项常见的任务,特别是在处理文本数据时。本示例探讨了如何使用Java实现从Unicode十六进制字符串到中英文字符的转换,以及反过来的过程。理解Unicode和UTF...
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
在计算机科学中,数据在内存中的存储方式有两种主要格式,即大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细...
字符串到十六进制转换方法:`BinaryToHexString` 该方法接收一个字节数组作为参数,并返回对应的十六进制字符串表示。具体步骤如下: 1. **初始化十六进制字符串**:`private static String hexStr = "0123456789...
### IT知识点:Java中16进制数据与字符串(含中文)的相互转换 #### 核心概念 在计算机科学中,十六进制(Hexadecimal)是一种常用的数值表示方法,通常用于表示二进制数据,因为十六进制的每一位可以表示四位二...
在IT领域,十六进制(Hexadecimal)和ASCII码(American Standard Code for Information Interchange)是两种常见的数据表示方式,它们在计算机科学中扮演着重要角色。本程序提供了从十六进制到ASCII码以及从ASCII码...
根据给定的文件信息,本文将详细介绍如何使用Java编程语言实现十六进制与汉字之间的转换。此技术在处理编码、网络安全、数据交换等场景中有着广泛的应用。 ### 一、十六进制与汉字转换的基本原理 #### 1.1 十六...
例如,在Java生态系统中,Apache Commons Lang库的`Hex`类就提供了丰富的十六进制与字节转换功能。 最后,文件名“lib”可能指的是一个库或者是一系列库文件,这些库可能包含了用于处理这类转换的函数或类。在不同...
本压缩包"VB汉字与十六进制互转.zip"提供了关于汉字与十六进制转换的源码,这在处理汉字编码、数据存储或网络传输时是非常实用的。以下将详细解析这个主题及其相关知识点。 首先,我们需要理解汉字在计算机中的表示...
这是因为中文字符在计算机内部是以多字节的形式存储的,而直接进行十六进制转换时,如果不正确地处理字节序列,就可能导致乱码的出现。 本文主要探讨如何在Android环境下正确实现字符串和十六进制之间的转换,同时...
- **二进制与十六进制转换**:可以使用`Integer.parseInt()`或`Long.parseLong()`方法配合`format()`函数将16进制字符串转换为二进制,反之亦然。 - **字符串与字节数组转换**:`getBytes("UTF-8")`可以将字符串...
进制转换在计算机网络中也扮演着重要角色,如IP地址的表示(通常使用点分十进制表示,但实际上是个32位二进制数),MAC地址(通常用冒号分隔的十六进制表示)以及URL编码(使用百分号%后跟两位十六进制数来表示非...
上述代码片段展示了在Java中如何处理十六进制与字符串之间的转换,如何合并与拆分字节,以及如何计算CRC16校验码。这些都是在处理网络通信、文件操作等场景时非常实用的算法和技术点。通过理解和掌握这些知识,可以...
将中文字符转换为Unicode编码,可以使用`Character`类的`toChars()`方法,或者直接通过字符串的`codePointAt()`方法获取码点,然后以"\u"开头的十六进制格式表示。例如: ```java String chineseStr = "你好"; for ...
9. 十六进制与十进制:C在十六进制中代表12。 10. 定点设备:显示屏是固定在某个位置的显示设备。 11. 局域网连接设备:网卡是计算机接入局域网的必要硬件。 12. 常用通信设备:DSL和ADSL是两种数字用户线路技术...
#### 三、十六进制转换 在计算机科学中,十六进制(Hexadecimal)是一种常用于表示数字的进位制系统,基数为16。通常用A-F代表十进制中的10-15。十六进制在处理二进制数据时非常方便,因为每四位二进制可以转换成一...
本主题主要探讨的是如何使用C#实现加密和解密操作,以便与Java应用程序进行无缝对接,特别是使用AES/CBC/PKCS7Padding算法,并将结果转换为16进制表示。下面将详细阐述相关知识点。 **AES(Advanced Encryption ...
在Java编程语言中,数据类型转换和进制转换是日常开发中的常见操作。本文将深入探讨标题和描述中提到的几个关键知识点:各种进制之间的转换、基本数据类型与字节的转换、对象与字节之间的转换、以及如何将字节序列...
17. **八进制与十六进制转换**:八进制数305转换为十六进制,先转换为十进制再转十六进制,为C5。 18. **十进制与二进制浮点数**:十进制数20.8125转换为二进制,需要考虑整数部分和小数部分。 19. **十进制与八...