Skip to content

Insight-Timer/byte_converter

 
 

Repository files navigation

🔢 ByteConverter

A fast, comprehensive byte & data-rate conversion library for Dart

Pub Version License: MIT Dart 3

📖 Documentation · 🐛 Report Bug · 💡 Request Feature


✨ Features

Feature Description
📏 Multi-Standard SI (KB, MB, GB), IEC (KiB, MiB, GiB), and JEDEC support
🔍 Smart Parsing Parse any format: "1.5 GB", "2 GiB + 512 MiB", "1,234 bytes"
🔢 BigInt Support Arbitrary precision for massive values (YB, ZiB, and beyond)
🚀 Data Rates Full bits/bytes per second with transfer time estimation
🌍 9 Languages Built-in localization: EN, DE, FR, ES, PT, HI, JA, ZH, RU
🎯 Clean API Namespace-based: display, storage, rate, compare, accessibility
Accessible Screen reader friendly output & ARIA labels
📊 Statistics Streaming quantiles, percentiles, and aggregation

🚀 Quick Start

Installation

dependencies:
  byte_converter: ^2.5.0

Basic Usage

import 'package:byte_converter/byte_converter.dart';

void main() {
  // 📦 Create from any unit
  final size = ByteConverter.fromGigaBytes(1.5);
  
  // 🎨 Display formats
  print(size.display.auto());    // "1.5 GB"
  print(size.display.fuzzy());   // "about 1.5 GB"
  print(size.display.gnu());     // "1.5G"
  
  // 🔍 Parse strings (even expressions!)
  final parsed = ByteConverter.parse('2 GiB + 512 MiB');
  print(parsed.gigaBytes);       // 2.68...
  
  // 🚀 Data rates & transfer estimation
  final rate = DataRate.parse('100 Mbps');
  final plan = size.estimateTransfer(rate);
  print(plan.etaString());       // "~2 minutes"
}

📦 Import Options

// 🎯 Core (most use cases)
import 'package:byte_converter/byte_converter.dart';

// 🔥 Full (statistics, streaming, interop)
import 'package:byte_converter/byte_converter_full.dart';

// 🌍 Localization (with intl package)
import 'package:byte_converter/byte_converter_intl.dart';

// 🪶 Lightweight (no intl dependency)
import 'package:byte_converter/byte_converter_lite.dart';

🎯 Namespace API

final size = ByteConverter.fromMegaBytes(1536);

// 🎨 Display - formatting options
size.display.auto()        // "1.5 GB"
size.display.fuzzy()       // "about 1.5 GB"
size.display.scientific()  // "1.5 × 10⁹ B"

// 💾 Storage - disk alignment
size.storage.sectors       // 3000000 (512B sectors)
size.storage.blocks        // 375000 (4KB blocks)

// 📡 Rate - network calculations
size.rate.bitsPerSecond    // 12884901888.0
size.rate.transferTime(rate) // Duration

// 📊 Compare - size comparisons
size.compare.percentOf(total)     // 15.0
size.compare.percentageBar(total) // "███░░░░░░░"

// ♿ Accessibility
size.accessibility.screenReader() // "one point five gigabytes"

📚 Documentation

Resource Description
📖 Wiki Full documentation
🏁 Getting Started Installation & setup
📝 Usage Guide Core functionality
🧰 Utilities Advanced features
🔄 Migration Guide Upgrading to v2.5.0

Made with ❤️ for the Dart community

⭐ Star on GitHub · 📦 View on pub.dev

About

Provides a simple interface for conversion of Digital values such as Bytes, KiloBytes etc.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 98.5%
  • Other 1.5%