`

数值类型与字节数组之间的相互转换

    博客分类:
  • java
阅读更多

我们在上文 如何选择使用字符串还是数字呢? 中阐述了使用数值类型的好处,那么问题来了,如何在数值类型与字节数组之间相互转换呢?

我们先看看单个数值类型和字节数组之间的转换,我们以Integer类型为例:

public static byte[] intToBytes(int x) {
    ByteBuffer intBuffer = ByteBuffer.allocate(Integer.BYTES);
    intBuffer.putInt(0, x);
    return intBuffer.array();
}

public static int bytesToInt(byte[] bytes) {
    return bytesToInt(bytes, 0, bytes.length);
}

public static int bytesToInt(byte[] bytes, int offset, int length) {
    ByteBuffer intBuffer = ByteBuffer.allocate(Integer.BYTES);
    intBuffer.put(bytes, offset, length);
    intBuffer.flip();
    return intBuffer.getInt();
}

 

 

接着我们看看多个数值类型和字节数组之间的转换,我们以Long集合和字节数组之间转换为例:

public static byte[] longSetToBytes(Collection<Long> ids){
    int len = ids.size()*Long.BYTES;
    ByteBuffer byteBuffer = ByteBuffer.allocate(len);
    int start = 0;
    for(Long id : ids){
        byteBuffer.putLong(start, id);
        start += Long.BYTES;
    }
    return byteBuffer.array();
}

public static Set<Long> bytesToLongSet(byte[] bytes){
    return bytesToLongSet(bytes, 0, bytes.length);
}

public static Set<Long> bytesToLongSet(byte[] bytes, int offset, int length){
    Set<Long> ids = new HashSet<>();
    ByteBuffer byteBuffer = ByteBuffer.allocate(length);
    byteBuffer.put(bytes, offset, length);
    byteBuffer.flip();
    int count = length/Long.BYTES;
    for(int i=0; i<count; i++) {
        ids.add(byteBuffer.getLong());
    }
    return ids;
}

 

 

由于ByteBuffer支持5种数值类型,对于我们在数值类型和字节数组之间的转换提供了完备的支持,如下图所示:

 

 

 

 

 

 

2
2
分享到:
评论

相关推荐

    LabVIEW,字节数组至数值转换

    LabVIEW程序,功能:将4字节的unsigned char输入组合成1个32-bit int值,若输入字节数不等于4则报错。

    在C#中将任意数值类型数据与字节数组相互转换的一个方法及源代码

    using System.IO; …… float f1 = 1.1F MemoryStream s = new MemoryStream(); BinaryWriter w=new BinaryWriter(s );

    C#将布尔类型转换成字节数组的方法

    例如,`BitConverter.ToString()`方法可以将字节数组转换为可读的十六进制字符串: ```csharp Console.WriteLine(BitConverter.ToString(byteArray)); ``` 在控制台上,这将输出表示布尔值的字节,对于true,它...

    Java数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -&gt; Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -&gt; Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    LongInt Float Double与字节数组的转换.rar

    在给定的压缩包文件中,重点讲述了`LongInt`、`Float`和`Double`这三种数值类型与字节数组之间的转换。这里我们将详细讨论这些转换的过程以及其在实际应用中的意义。 首先,`LongInt`是表示32位整数的数据类型,...

    将字节数组转换为各种基本类型

    标题提到的“将字节数组转换为各种基本类型”涉及到的是字节数组与C#的基本数据类型之间的转换,如整型(int)、浮点型(float)、双精度型(double)等。下面将详细介绍这一主题,以及如何在C#中进行这些转换。 1....

    TIA博途-整数拆分到字节数组中-全局FC库文件-V15版本.zip

    在这种情况下,我们有一个专门处理整数到字节数组转换的全局FC,它可以方便地集成到你的程序中,无需从头编写相同的转换逻辑。 要理解这个过程,首先我们需要知道整数是如何存储的。在二进制系统中,整数由最高位的...

    数字类型 转换 字节数组

    可以将 Float、 Double、 与byte[]之间进行互换,从而可以在Java 的开发环境中实现C语言的Union 的功能! /** * 对数字和字节进行转换。 * 基础知识: * 假设数据存储是以大端模式存储的: * byte:...

    C# Byte数组转Int32 Short Float(浮点数)

    要从字节数组转换为`Int32`,可以使用`BitConverter.ToInt32()`方法。这个方法接受字节数组和起始位置作为参数,并返回转换后的`Int32`值。反向操作,即将`Int32`转换为字节数组,可以使用`BitConverter.GetBytes()`...

    c#中的类型转换详解

    其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之 间的转换、字符串和字符数组/字节数组之间的转换、各种数值类型和字节数组之间的转换、十六进制数输出以及...

    易语言源码易语言整数到字节数组源码.rar

    通过阅读源码,可以学习如何在易语言中操作字节数组,以及如何进行类型转换。此外,尝试修改源码以支持不同字节顺序或处理更大/更小的整数类型,也是一种有效的实践方式。 总的来说,"易语言整数到字节数组"的源码...

    Java基本类型与byte数组之间相互转换方法

    6. 字节数组到基本类型的转换,如`getShort(byte[] bytes)`,遵循类似的逻辑,通过位运算将字节重新组合成原始的数值。 总之,这些方法提供了在Java中基础数据类型和byte数组之间转换的实用工具。它们对于数据的...

    C#数字转字节数组类BitConverter.pdf

    通过上述示例,我们可以看到BitConverter类在处理数据类型与字节数组之间的转换时的灵活性和实用性。正确理解和使用BitConverter类,可以帮助开发者更好地处理底层二进制数据,从而在各种场景下提高程序的效率和兼容...

    单字节 多字节 双字节 相互转换

    * `wcstombs()`:将双字节字符串数组转换为多字节字符串 在实际应用中,需要根据实际情况选择合适的转换函数,以确保字符串的正确转换。 Unicode 和宽字符 在上面的讨论中,我们提到了 Unicode 和宽字符。 ...

    float转byte数组测试小工具

    本工具“float转byte数组测试小工具”专注于将浮点数(float)转换为字节数组,这是一种在计算机内存中表示和传输数值的常用方式。在Java、C++、C#等编程语言中,这种转换尤其重要,因为它们使用不同的数据结构来...

    数组的转换函数

    上述代码片段提供了一些在Java中实现整型数(long类型)与网络字节序的字节数组之间转换的方法。以下是这些方法的详细说明: 1. `longToBytes(long n)`:这个静态方法将一个长整型(long)数值`n`转换为一个8字节的...

    C# 中将数值型数据转换为字节数组的方法

    在C#编程中,将数值型数据转换为字节数组是一种常见的操作,尤其是在网络通信、数据存储或序列化过程中。下面将详细解释这个过程,以及如何使用`BinaryWriter`和`BinaryReader`类来实现这个转换。 1. **数值型数据...

    二进制四字节数组转化为浮点数

    本文将深入探讨如何将一个二进制的四字节数组转化为浮点数,这是许多应用程序,如数学计算、图像处理、音频处理以及网络通信中的关键环节。 ### 二进制与浮点数 在数字电子系统中,所有数据最终都被表示为二进制...

    C#将字节数组转换成数字的方法

    本文将详细介绍如何在C#中将字节数组转换为数字,特别是转换为`decimal`类型的数值。 首先,让我们了解字节数组与数字转换的基本概念。在C#中,数字类型如`int`、`float`、`double`和`decimal`等都有其特定的二进制...

Global site tag (gtag.js) - Google Analytics