我们在上文 如何选择使用字符串还是数字呢? 中阐述了使用数值类型的好处,那么问题来了,如何在数值类型与字节数组之间相互转换呢?
我们先看看单个数值类型和字节数组之间的转换,我们以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种数值类型,对于我们在数值类型和字节数组之间的转换提供了完备的支持,如下图所示:
相关推荐
LabVIEW程序,功能:将4字节的unsigned char输入组合成1个32-bit int值,若输入字节数不等于4则报错。
using System.IO; …… float f1 = 1.1F MemoryStream s = new MemoryStream(); BinaryWriter w=new BinaryWriter(s );
例如,`BitConverter.ToString()`方法可以将字节数组转换为可读的十六进制字符串: ```csharp Console.WriteLine(BitConverter.ToString(byteArray)); ``` 在控制台上,这将输出表示布尔值的字节,对于true,它...
Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...
在给定的压缩包文件中,重点讲述了`LongInt`、`Float`和`Double`这三种数值类型与字节数组之间的转换。这里我们将详细讨论这些转换的过程以及其在实际应用中的意义。 首先,`LongInt`是表示32位整数的数据类型,...
标题提到的“将字节数组转换为各种基本类型”涉及到的是字节数组与C#的基本数据类型之间的转换,如整型(int)、浮点型(float)、双精度型(double)等。下面将详细介绍这一主题,以及如何在C#中进行这些转换。 1....
在这种情况下,我们有一个专门处理整数到字节数组转换的全局FC,它可以方便地集成到你的程序中,无需从头编写相同的转换逻辑。 要理解这个过程,首先我们需要知道整数是如何存储的。在二进制系统中,整数由最高位的...
可以将 Float、 Double、 与byte[]之间进行互换,从而可以在Java 的开发环境中实现C语言的Union 的功能! /** * 对数字和字节进行转换。 * 基础知识: * 假设数据存储是以大端模式存储的: * byte:...
要从字节数组转换为`Int32`,可以使用`BitConverter.ToInt32()`方法。这个方法接受字节数组和起始位置作为参数,并返回转换后的`Int32`值。反向操作,即将`Int32`转换为字节数组,可以使用`BitConverter.GetBytes()`...
其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之 间的转换、字符串和字符数组/字节数组之间的转换、各种数值类型和字节数组之间的转换、十六进制数输出以及...
通过阅读源码,可以学习如何在易语言中操作字节数组,以及如何进行类型转换。此外,尝试修改源码以支持不同字节顺序或处理更大/更小的整数类型,也是一种有效的实践方式。 总的来说,"易语言整数到字节数组"的源码...
6. 字节数组到基本类型的转换,如`getShort(byte[] bytes)`,遵循类似的逻辑,通过位运算将字节重新组合成原始的数值。 总之,这些方法提供了在Java中基础数据类型和byte数组之间转换的实用工具。它们对于数据的...
通过上述示例,我们可以看到BitConverter类在处理数据类型与字节数组之间的转换时的灵活性和实用性。正确理解和使用BitConverter类,可以帮助开发者更好地处理底层二进制数据,从而在各种场景下提高程序的效率和兼容...
* `wcstombs()`:将双字节字符串数组转换为多字节字符串 在实际应用中,需要根据实际情况选择合适的转换函数,以确保字符串的正确转换。 Unicode 和宽字符 在上面的讨论中,我们提到了 Unicode 和宽字符。 ...
本工具“float转byte数组测试小工具”专注于将浮点数(float)转换为字节数组,这是一种在计算机内存中表示和传输数值的常用方式。在Java、C++、C#等编程语言中,这种转换尤其重要,因为它们使用不同的数据结构来...
上述代码片段提供了一些在Java中实现整型数(long类型)与网络字节序的字节数组之间转换的方法。以下是这些方法的详细说明: 1. `longToBytes(long n)`:这个静态方法将一个长整型(long)数值`n`转换为一个8字节的...
在C#编程中,将数值型数据转换为字节数组是一种常见的操作,尤其是在网络通信、数据存储或序列化过程中。下面将详细解释这个过程,以及如何使用`BinaryWriter`和`BinaryReader`类来实现这个转换。 1. **数值型数据...
本文将深入探讨如何将一个二进制的四字节数组转化为浮点数,这是许多应用程序,如数学计算、图像处理、音频处理以及网络通信中的关键环节。 ### 二进制与浮点数 在数字电子系统中,所有数据最终都被表示为二进制...
本文将详细介绍如何在C#中将字节数组转换为数字,特别是转换为`decimal`类型的数值。 首先,让我们了解字节数组与数字转换的基本概念。在C#中,数字类型如`int`、`float`、`double`和`decimal`等都有其特定的二进制...