c#中的BitConverter的java实现

devtools/2024/9/23 10:17:37/

最近在做c#项目的java迁移,发现部分C#方法java中没有对应实现如图:

java中的数字类型都是有符号的所以转无符号的时候需要进行手动对符号位& 0xFFFF进行处理,目前只整理了项目中使用到的方法,后续有用到其他方法在进行追加如下:

java">public class BitConverterUtil {/*** 将字节数组中的两个字节(从指定的索引位置开始)转换为无符号的16位整数。** @param array 包含要转换的字节的数组* @param index 数组中要开始转换的字节的索引位置* @return 转换后的无符号16位整数* @throws IndexOutOfBoundsException 如果index小于0或者index+2大于array的长度*/public static int ToUInt16(byte[] array, int index) {return ByteBuffer.wrap(array, index, 2).order(ByteOrder.LITTLE_ENDIAN).getShort() & 0xFFFF;}/*** 将字节数组中的两个字节转换为有符号的16位整数(short)。** @param array 包含要转换的字节的数组* @param index 数组中要开始转换的字节的索引位置* @return 转换后的有符号16位整数(short)* @throws IndexOutOfBoundsException 如果索引位置小于0或大于等于数组长度减去1(因为需要两个字节)*/public static short ToInt16(byte[] array, int index) {return ByteBuffer.wrap(array, index, 2).order(ByteOrder.LITTLE_ENDIAN).getShort();}/*** 将字节数组中的四个字节(从指定的索引位置开始)转换为无符号的32位整数(Long类型)。** @param array 包含要转换的字节的数组* @param index 数组中要开始转换的字节的索引位置* @return 转换后的无符号32位整数(Long类型),范围为0到4294967295(即2^32-1)* @throws IndexOutOfBoundsException 如果索引位置小于0或者索引位置加上4(表示要读取的字节数)大于数组长度*/public static Long ToUInt32(byte[] array, int index) {return ByteBuffer.wrap(array, index, 4).order(ByteOrder.LITTLE_ENDIAN).getInt() & 0xFFFFFFFFL;}/*** 将给定字节数组从指定索引位置开始的四个字节转换为一个32位整数。** @param array 包含要转换的字节的数组* @param index 数组中要开始转换的字节的索引位置* @return 转换后的32位整数* @throws IndexOutOfBoundsException 如果索引位置小于0或索引位置加4超过数组长度*/public static int ToInt32(byte[] array, int index) {return ByteBuffer.wrap(array, index, 4).order(ByteOrder.LITTLE_ENDIAN).getInt();}
}

再此记录一下,以备不时之需。


http://www.ppmy.cn/devtools/87915.html

相关文章

Mac电脑数据恢复软件 Disk Drill 企业版安装

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将拖入文件夹中,等待安装完毕2、应用程序显示软件图标,运行软件,点击安装,软件页面打开表示安装成功 三、运行测试1、打开软件,恢复一个…

1000W长连接,如何建立和维护?千万用户IM 架构设计

1000W长连接,如何建立和维护?千万用户IM 架构设计 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的架构类/设计类…

frp的配置参考

1、官方教程 https://gofrp.org/zh-cn/docs/setup/systemd/ 2、github上全配置参考教程 https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml 3、我的配置记录 服务端 bindAddr "0.0.0.0" bindPort 7000 vhostHTTPPort 8484auth.method …

JavaScript 实例:掌握编程技巧

JavaScript 实例:掌握编程技巧 JavaScript 是一种广泛使用的编程语言,它为网页添加交互性,是现代网络开发的重要组成部分。本文将通过一系列实例,帮助您更好地理解和掌握 JavaScript 的核心概念和编程技巧。 基础实例:变量和数据类型 首先,让我们从最基础的开始。Java…

vue、webpack打包优化

webpack默认打包把所有的资源都放在chunk-vendors.js,导致文件很大,从而让页面的响应很慢 1 使用compression-webpack-plugin,打包生成gzip静态资源压缩文件,结合服务端Nginx的配置,服务器启用gzip; 1.1 安…

信号处理——自相关和互相关分析

1.概括 在信号处理中,自相关和互相关是相关分析非常重要的概念,它们能分析一个信号或两个信号在时间维度的相似性,在振动测试分析、雷达测距和声发射探伤得到了广泛的应用。自相关分析的研究对象为一个信号,互相关分析的研究对象…

FPGA开发——按键控制数码管的设计

一、概述 按键控制数码管是一种常见的电子显示技术,它结合了按键输入与数码管显示的功能。在这一设计中,用户通过按下不同的按键来发送指令,这些指令随后被处理并转换为数码管上显示的数字或字符。按键通常作为输入设备,通过电路…

volatile 关键字的两层语义

volatile 关键字的两层语义 1、可见性2、禁止指令重排序3、工作机制4、总结 💖The Begin💖点点关注,收藏不迷路💖 volatile 关键字在Java并发编程中扮演着重要角色,它主要用于保证变量的可见性和禁止指令重排序。 1、…