搜尋套件、儲存庫與 APP 分類

套件詳情v4.0.0

binary

用於在 Dart 中存取二進位資料和位元操作的工具。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
1.2萬
喜歡數
24
Pub 分數
160

安裝套件

flutter pub add binary

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

該二進制套件提供用於處理二進制資料和執行位級運算的工具。它支援高效地讀取、寫入和操作二進制串流,以及執行位運算,例如移位、遮罩和提取單個位。非常適合低階資料處理、序列化或處理原始二進制格式(如影像或網路協定)。此套件設計輕巧,並可在所有主要平台(包括 Android、iOS、Web、macOS、Windows 和 Linux)上相容。

適用情境

  • 解析二進位檔案格式
  • 實現網路協定處理程式
  • 處理原始感測器數據
  • 位運算資料編碼/解碼
  • 處理二進制序列化
  • 建立自定義二進位編碼器

主要特色

  • 高效位運算
  • 對大端和小端格式的支援
  • 基於流的二進位讀寫
  • 跨平台相容性
  • 用於常見二進位操作的簡單 API
  • 無外部依賴

適合對象

  • 處理二進制資料的開發者
  • 底層系統程式設計
  • 使用二進位資源進行遊戲開發
  • 物聯網與嵌入式系統
  • 網路協定實作

使用建議

  • 不適用於高性能量關鍵應用
  • 需要理解二進位資料概念
  • 僅限基本位操作
  • 可能需要額外的解析邏輯來處理複雜格式
  • 最適合非串流、有限二進位資料

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Binary

Utilities for accessing binary data and bit manipulation in Dart.

Binary on pub.dev Code coverage Github action status Dartdocs Style guide

[!IMPORTANT] Version 4.0.0 has a large set of breaking changes, including removing the vast majority of extension methods and boxed classes, in favor of using the newer extension types feature in Dart. I would be opening to adding back some deprecated methods, or a lib/compat.dart file if there is demand; please file an issue if you need this.

Getting started

dart pub add binary

Then, import the package and start using it:

import 'package:binary/binary.dart';

If you are not familiar with extension methods and extension types, it is worth reading the documentation before using this package, which has heavy use of extensions for most functionality. A small primer is instead of writing something like:

void main() {
  // Old API in version <= 0.1.3:
  print(toBinaryPadded(0x0C, 8)); // 00001100

  // Old API in version < 4.0.0:
  print(0x0C.toBinaryPadded(8)); // 00001100
}

You now use toBinaryString (and other methods) on an extension type:

void main() {
  // New API.
  print(Uint8(0x0C).toBinaryString()); // 00001100
}

Notice that the width is no longer required, as the type itself knows its width.

Usage

This package provides a few sets of APIs extension types and methods.

Most users will use one of the fixed-width integer types, such as Uint8:

// Parse and reprsent a binary integer:
final rawInt = int.parse('0111' '1111', radix: 2);
final fixInt = Uint8(rawInt);
print(fixInt); // 127

// Works identically to the >>> operator in JavaScript:
final shifted = fixInt.signedRightShift(5);
print(shifted.toBinaryString()); // 00000011
Overflows

Fixed with integers do not overflow unexpectedly, unlike the core Dart types.

By default, any operation that can overflow throws an assertion error in debug mode, and wraps around in release mode. For example:

// An error in debug mode, or 0 in release mode.
Uint8(255) + Uint8(1);

To disable assertions, and always wrap, even in debug mode:

debugCheckFixedWithInRange = false;

Finer-grained control is available by using variants of the operators that explicitly handle overflow:

// Returns null if the operation would overflow.
Uint8(255).tryAdd(Uint8(1));

// Wraps around if the operation would overflow.
Uint8(255).wrappedAdd(Uint8(1));

// Clamps the result to the min/max value if the operation would overflow.
Uint8(255).clampedAdd(Uint8(1));

An additional variant, uncheckedAdd, is available for when you are certain that overflow is not possible, and want to avoid the overhead of checking:

// Asserts in debug mode, no overhead in release mode, but can overflow!

// OK, this will definitely not overflow.
Uint8(1).uncheckedAdd(Uint8(3));

// DANGEROUS: This will overflow, but it won't be checked in release mode!
Uint8(255).uncheckedAdd(Uint8(1));

Compatibility

This package is intended to work identically and well in:

  • The Dart VM, in both JIT and AOT modes.
  • Flutter, in both JIT and AOT modes.
  • The web, in both DDC, Dart2JS modes and compiled to WASM.

As a result, there are no built-in ways to access integers > 32-bit provided (as JS integers are limited).

Feel free to file an issue if you'd like limited support for 64 and 128-bit integers.

Contributing

To run the tests, run:

dart test

Or, to run a comprehensive set of tests on all supported platforms, run:

dart test -P all

To check code coverage locally, run:

./chore coverage

To preview dartdoc output locally, run:

./chore dartdoc

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。