最近因项目需要,要把数据以最紧凑的方式存放,因此需要精确到bit,网上好像找不到现成的工具,只好自己写了一个BitBuffer,类似ByteBuffer的处理,当然现在还只是最基本的功能,不过总比没有好。
现在托管在github上:
https://github.com/xiaosunzhu/bit_utils
简单用法:
byte[] data = { (byte)210, 50 }; // 11010010 00110010 BitBuffer buffer = BitBuffer.wrapBytes(data); System.out.println(buffer.remainingBits()); // 16 byte bit = buffer.getByte(2); // get 2 bits, return in a byte. // This bit is 3. System.out.println(buffer.remainingBits()); // 14 bit = buffer.getByte(7,8); // This means get 8 bits from 7 position, return in a bytes. // This bit is 25(00011001). System.out.println(buffer.remainingBits()); // 14, not change. // or byte[] bits = buffer.getBytes(12); // This means get 12 bits, return in 2 bytes. // This bits is {210, 3}
byte data = (byte)9; // 1001 BitBuffer buffer = BitBuffer.allocate(20); buffer.put(data, 4); // now buffer is 1001 System.out.println(buffer.remainingBits()); // 16 byte[] datas = new byte[]{ (byte)210, 89 }; // 11010010 01011001 buffer.put(datas, 15); // This means put 15 bits into buffer, buffer is 10011101 00100101 100 System.out.println(buffer.remainingBits()); // 1 buffer.put(data, 2, 4); // This means put 4 bits into buffer, start position is 2 // now buffer is 10100101 00100101 100 System.out.println(buffer.remainingBits()); // 1, not change. buffer.flip(); System.out.println(buffer.remainingBits()); // 19
希望有需要的同学都可以试用试用,有什么bug或者什么需求都可以反馈,我会尽量及时完善的。下一个版本我是想加上byte[]区从起始端bit取或者靠末尾端bit取的功能。
相关推荐
寄存器bit查看工具,显示寄存器每bit值,寄存器bit查看工具,显示寄存器每bit值,寄存器bit查看工具,显示寄存器每bit值寄存器bit查看工具,显示寄存器每bit值
标题提到的"寄存器 bits 查看小工具"是一款专门设计用于查看和修改不同位宽寄存器值的软件工具,支持32位、64位、128位以及256位的寄存器操作。 首先,我们来了解一下不同位宽的寄存器: - **32bit寄存器**:在32...
32bit 数值转换工具,支持16,2,10进制多重转换。编写查看MCU寄存器必备工具。
10bit压制工具,如压缩包内的“x264_rev2074+602_tMod-10bit”,是专为提升视频质量而设计的专业工具。这篇文章将深入探讨10bit压制的原理、优势以及如何使用这类工具。 首先,我们需要了解什么是10bit。在数字视频...
在IT领域,"bit映射工具"是一种用于管理和可视化数据存储的实用程序,尤其是在处理大量二进制数据时。这个“demo版本”很可能是为了展示软件的基本功能和工作原理,以便用户在购买完整版之前有一个初步了解。让我们...
本篇文章将深入探讨byte与bit之间的转换,以及如何使用"Byte转Bit"这样的工具进行转换。 1. **字节(Byte)与位(Bit)的概念** - **字节(Byte)**: 字节是计算机存储和传输数据的基本单位,通常用大写字母B表示...
非常实用的bit 分析工具,可以实现任意32位数据转换成二进制bit,每一位都可以操作
32bit和64bit版本的区分是为了兼容不同架构的处理器。32位版本适用于传统的x86处理器,而64位版本则用于x64架构,后者通常提供更好的性能和更大的内存支持。 在EFI SHELL下,用户可以通过命令行来运行RU工具,进行...
**BITEK BIT1612/BIT1618/32 开发工具全集** 这个开发工具全集是针对BITEK公司的BIT1612、BIT1618以及BIT1632系列微控制器设计的一整套开发环境。BITEK是一家专注于微控制器解决方案的公司,其产品广泛应用于各种...
工具分为32位(32bit)和64位(64bit)两个版本,以满足不同操作系统的需求。 32位与64位版本的主要区别在于它们能够处理的内存大小和计算能力。32位系统最大支持4GB内存,而64位系统理论上可以处理更多的内存,...
位图(Bitmap)是计算机图形学中常用的一种图像文件格式,尤其在Windows系统中广泛使用。...在实际项目中,根据需求选择合适的工具和方法,灵活地处理不同色彩深度的位图,可以提高程序的兼容性和效率。
本工具专注于Byte与Bit之间的转换,对于程序员来说,这样的工具是进行低级别编程或理解二进制数据流时非常有用的。 首先,我们来看“Byte转Bit”。一个Byte等于8位(Bits)。当你有一个字节的数据时,例如0x42...
标题 "BITEK BIT1618C 開發輔助工具" 指的是一种专门用于开发和调试BITEK公司的BIT1618C芯片的软件或硬件工具。这种工具通常由一系列组件组成,包括编程器、仿真器、调试器、IDE(集成开发环境)和其他必要的软件...
《Kafkatool_64bit:一款强大的Kafka可视化工具》 Kafkatool_64bit是一款专为64位操作系统设计的Kafka管理工具,它以其直观的界面和丰富的功能,使得管理和监控Apache Kafka集群变得轻而易举。这款工具的主要目标是...
BIT-101 XPath Query Tool XML查询工具
原创软件,MFC界面,可以任意转换64bit数据到2进制、10进制、16进制,2进制可以直接查看任意bit,取0~63之间的任意区间值,并且支持取位、移位大小端转换等等,尤其适合做嵌入式开发的相关人员使用。真正做到了简单...
8bit压制工具在使用时,用户需要根据自己的需求调整各种参数,如质量优先还是大小优先,是否启用二-pass编码,以及是否进行画面裁剪、缩放等预处理操作。同时,了解如何正确设置这些参数对于获得理想压制结果至关...
根据提供的标题、描述、标签及部分内容,我们可以了解到这段代码与GSM7Bit编码转换至Unicode有关。接下来,我们将深入解析这段代码所涉及的关键概念和技术细节。 ### GSM7Bit编码简介 GSM7Bit是一种用于移动通信...
"svn64bit安装工具包"提供的正是适用于64位操作系统的SVN客户端或服务器端安装程序,旨在方便用户在64位系统上快速部署和使用SVN。 安装SVN涉及以下关键步骤: 1. **下载**:首先,你需要从官方或者可靠的第三方源...
### 7bit 短信编码浅析 #### 前言 在现代通信系统中,短信服务(SMS,Short Message Service)作为一种重要的文本通信手段,至今仍然在人们的日常生活中占据着不可替代的位置。尽管随着互联网技术的发展,诸如即时...