`

java 进制转换 实例

    博客分类:
  • java
 
阅读更多

import com.biiway.gmrc.protocol.util.StringUtil;
import com.biiway.gmrc.protocol.util.ToStringUtil;

/** 二进制字符串和字节数组的转换工具类 */
public class BinaryTransformer {
/** 二进制字符串转换为字节数组 */
public static byte[] string2ByteArray(String inputString) {
if (StringUtil.isEmpty(inputString)) {
return new byte[0];
}
inputString = inputString.trim();
int length = inputString.length();
byte[] byteArray = new byte[length];
for (int i = 0; i < length; i++) {
char c = inputString.charAt(i);
if (c >= '0' && c <= '9') {
byteArray[i] = (byte) (c - '0');
} else if (c >= 'A' && c <= 'F') {
byteArray[i] = (byte) (c - 'A' + 10);
} else if (c >= 'a' && c <= 'f') {
/** 兼容大小写 */
byteArray[i] = (byte) (c - 'a' + 10);
} else {
throw new IllegalArgumentException("第" + (i + 1) + "个字符'" + c
+ "'无法转换为字节!");
}
}
return byteArray;
}

/** 字节数组转换为二进制字符串 */
public static String byteArray2String(byte[] byteArray) {
if (byteArray == null) {
return null;
}
int length = byteArray.length;
char[] charArray = new char[length];
for (int i = 0; i < length; i++) {
byte b = byteArray[i];
charArray[i] = (b <= (byte) 9) ? (char) ('0' + b)
: (char) ('A' + b - 10);
}
return String.valueOf(charArray);
}

/** 整数转换为二进制数组(1个字节) */
public static byte[] int8ToByteArray(int int8) {
byte[] byteArray = new byte[1 * 2];
byteArray[0] = (byte) ((int8 >> 4) & 0xF);
byteArray[1] = (byte) (int8 & 0xF);
return byteArray;
}

/** 整数转换为二进制数组(2个字节) */
public static byte[] int16ToByteArray(int int16) {
byte[] byteArray = new byte[2 * 2];
byteArray[0] = (byte) ((int16 >> 4) & 0xF);
byteArray[1] = (byte) (int16 & 0xF);
byteArray[2] = (byte) ((int16 >> 12) & 0xF);
byteArray[3] = (byte) ((int16 >> & 0xF);
return byteArray;
}

/** 整数转换为二进制数组(3个字节) */
public static byte[] int24ToByteArray(int int24) {
byte[] byteArray = new byte[3 * 2];
byteArray[0] = (byte) ((int24 >> 4) & 0xF);
byteArray[1] = (byte) (int24 & 0xF);
byteArray[2] = (byte) ((int24 >> 12) & 0xF);
byteArray[3] = (byte) ((int24 >> & 0xF);
byteArray[4] = (byte) ((int24 >> 20) & 0xF);
byteArray[5] = (byte) ((int24 >> 16) & 0xF);
return byteArray;
}

/** 将十进制数直接转换成十六进制数组(每位直接对应相同的十六进制数字) */
public static byte[] longToDirectByteArray(long l, int length) {
if (length < 0) {
throw new IllegalArgumentException("数组长度不能是负数!");
}
NumberDigit numberDigit = new NumberDigit(l);
byte[] byteArray = new byte[length];
for (int i = 0; i < length; i++) {
byteArray[length - 1 - i] = (byte) (numberDigit.getDigit(i));
}
return byteArray;
}

/** 二进制数组转换为十六进制数组 */
public static byte[] byteArray2HexArray(byte[] byteArray) {
if (byteArray == null) {
return null;
}
int byteLength = byteArray.length;
if (byteLength % 2 != 0) {
throw new IllegalArgumentException("二进制数组的长度需要是偶数!");
}
int hexLength = byteLength / 2;
byte[] hexArray = new byte[hexLength];
for (int i = 0; i < hexLength; i++) {
hexArray[i] = (byte) ((byteArray[i * 2] << 4) + byteArray[i * 2 + 1]);
}
return hexArray;
}

/** 十六进制数组转换为二进制数组 */
public static byte[] hexArray2ByteArray(int[] hexArray) {
if (hexArray == null) {
return null;
}
int length = hexArray.length;
byte[] byteArray = new byte[length * 2];
for (int i = 0; i < length; i++) {
byteArray[i * 2] = (byte) ((hexArray[i] >> 4) & 0xF);
byteArray[i * 2 + 1] = (byte) (hexArray[i] & 0xF);
}
return byteArray;
}

/** 十六进制数组转换为二进制数组 */
public static byte[] hexArray2ByteArray(byte[] hexArray) {
if (hexArray == null) {
return null;
}
int length = hexArray.length;
byte[] byteArray = new byte[length * 2];
for (int i = 0; i < length; i++) {
byteArray[i * 2] = (byte) ((hexArray[i] >> 4) & 0xF);
byteArray[i * 2 + 1] = (byte) (hexArray[i] & 0xF);
}
return byteArray;
}
         /** 将整数转换为16位字符串 高位补0 */
public static String int2String16(int i) {
int length = 16;
char[] charArray = new char[length];
for (int index = 0; index < length; index++) {
int currentBit = (i >> (length - 1 - index)) & 0x1;
charArray[index] = (currentBit == 1) ? '1' : '0';
}
return String.valueOf(charArray);
}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java 进制转换实例详解

    Java 进制转换实例详解 Java 进制转换实例详解是 Java 语言中的一种基础知识,涉及到数字的进制转换问题。在 Java 中,数字可以用不同的进制表示,包括二进制、八进制、十进制、十六进制等。下面将详细介绍 Java ...

    JAVA 进制转换全攻略.docx

    8. **进制转换的实例**: 下面的代码片段展示了如何使用`Integer`类的方法进行不同进制间的转换: ```java public class Test { public static void main(String[] args) { int number = 100; String ...

    java十进制转换二进制

    ### Java十进制转换二进制 在计算机科学领域,数据表示和转换是十分重要的基础知识之一。本篇文章将深入解析一个使用Java语言编写的程序,该程序能够将十进制正数和负数转换为二进制形式。通过分析代码逻辑、算法...

    日期_进制转换_时间戳

    在这个案例中,这些工具类可能包含了进制转换和日期时间处理的实用函数,便于开发者在代码中直接调用,而无需创建实例。 综上所述,这个压缩包提供了强大的功能,帮助开发人员更高效地处理日期、时间戳和进制转换,...

    数字各种进制的转换

    通过具体的算法实现和实例分析,帮助读者深入理解进制转换的基本原理及其在计算机科学中的应用。 #### 基础概念 1. **进制**:进制是指一个计数系统所使用的基数。常见的进制有: - **二进制**(Base-2):只有0...

    安卓开发进制转换器Hex_Conversion.zip请查考

    这个名为"Hex_Conversion.zip"的压缩包文件包含了一个安卓进制转换器的实例,对于初学者来说是一个很好的学习资源。进制转换通常涉及到二进制(Binary)、八进制(Octal)、十进制(Decimal)和十六进制...

    stack实现进制转换

    总结一下,本文讨论了如何使用Java中的栈数据结构实现进制转换,特别是从十进制到二进制的转换。通过自定义的`MyArrayStack`类和`DecToBinaryTest`测试类,我们能够验证和实践这个过程,同时巩固了对栈操作和算法...

    Java实现SECS协议中的进制转换与半导体设备通信解析

    内容概要:本文详细介绍了Java在实现SECS(SEM I Equipment Communication Standard)协议时的各种进制转换方法及其应用。SECS协议主要用于半导体行业的设备间通信,涉及大量的十六进制、ASCII、BCD等不同进制的数据...

    进制转换问题

    2. 进制转换库:许多编程语言有专门处理进制转换的库,如Java的`java.util.Scanner`或JavaScript的`BigInt`对象。 五、应用实例 进制转换在编程中有很多实际应用,如: - 数据存储和传输:例如网络协议中的IP地址、...

    java科学计器(进制转换).doc

    在Java编程中,创建一个科学计算器涉及到多个方面,包括用户界面设计、事件处理、数学运算以及进制转换。以下是对这个“java科学计器(进制转换).doc”文档中涉及的知识点的详细说明: 1. **用户界面设计**: - ...

    通过java编程得到.jpg图片16进制的数据

    3. **字节与16进制转换**:Java中的`Integer.toHexString()`方法是将一个整数转换为16进制字符串的关键。由于图片文件由字节组成,我们需要先读取这些字节,然后逐个转换成16进制。 4. **位操作**:如果需要读取....

    javascript中简单的进制转换代码实例

    在JavaScript中,进制转换是常见的编程需求,尤其是在处理二进制、八进制、十进制和十六进制数据时。上述代码提供了一个简单的HTML页面,实现了十进制与二进制之间的相互转换。下面将详细解释这段代码的工作原理和...

    利用Java读取二进制文件实例详解

    "Java读取二进制文件实例详解" 本文主要介绍了利用Java读取二进制文件的相关知识点,通过示例代码详细介绍了读取二进制文件的实现方法,对大家的学习或者使用Java具有一定的参考学习价值。 一、Java读取二进制文件...

    java程序实现十进制转二进制,八进制,十六进制

    对于十六进制转换,程序定义了一个`chang`方法来处理数值大于9的情况。当数值在0-9之间时,可以直接转换;当数值大于9时,需要将数值映射到对应的十六进制字符(A-F)。 ### 总结 这个Java程序展示了如何使用Swing...

    小数进制转化器 源代码 文档API

    总的来说,"小数进制转化器"项目不仅是一个实用的工具,也是一个学习Java进制转换和GUI编程的绝佳实例。通过研究源代码、查阅API文档并实践运行,初学者可以深入理解Java编程的基础知识,并提升实际开发能力。

    实例007——将十进制数转换为二进制输出.zip

    在编程中,许多语言都内置了将十进制转换为二进制的函数。例如,在Python中,可以使用`bin()`函数: ```python decimal_number = 25 binary_string = bin(decimal_number)[2:] # [2:] 是为了去掉前缀'0b' print...

    javascript常见数字进制转换实例分析

    本文实例讲述了javascript常见数字进制转换的方法。分享给大家供大家参考,具体如下: 基本思路是先把其他进制的转化成 十进制,然后再转化。这个过程是利用parseInt函数,例如把一个16进制的数字(num)转化成10进制...

    java网络编程,UDP,发送16进制报文。

    上述代码中,`DatatypeConverter.parseHexBinary()`方法用于将16进制字符串转换为字节数组,然后创建一个`DatagramPacket`实例,包含数据和目标服务器的IP地址与端口。最后,通过`DatagramSocket`发送这个数据包。 ...

    【博客 Java调用MATLAB,将文件转换为二进制流】java+matlab程序

    这样,Java就能执行MATLAB的二进制转换功能。需要注意的是,Java代码需要正确配置MATLAB的运行环境,包括MCR路径和相关的系统属性设置。 4. **处理二进制流**:MATLAB转换后的二进制数据在Java中表现为字节数组,...

    jQuery实现可以计算进制转换的计算器

    本文实例为大家分享了jQuery实现可以计算进制转换的计算器,供大家参考,具体内容如下 在案例8的基础上增加了进制转换功能 动画效果: &lt;!DOCTYPE html&gt; &lt;html lang=en&gt; &lt;head&gt; &lt;meta charset=...

Global site tag (gtag.js) - Google Analytics