{"id":22351403,"url":"https://github.com/metio/storage-units.java","last_synced_at":"2026-04-08T07:02:34.538Z","repository":{"id":4597623,"uuid":"5740378","full_name":"metio/storage-units.java","owner":"metio","description":"Java library for storage units","archived":false,"fork":false,"pushed_at":"2026-04-05T03:55:30.000Z","size":680,"stargazers_count":19,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-05T05:22:30.134Z","etag":null,"topics":["java","storage","storage-unit-converter"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"0bsd","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-09-09T18:36:14.000Z","updated_at":"2026-04-05T03:55:36.000Z","dependencies_parsed_at":"2023-07-05T20:46:14.959Z","dependency_job_id":"76a45236-97ec-4000-b1fa-9c17feefdd78","html_url":"https://github.com/metio/storage-units.java","commit_stats":null,"previous_names":["sebhoss/storage-units"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/metio/storage-units.java","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metio%2Fstorage-units.java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metio%2Fstorage-units.java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metio%2Fstorage-units.java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metio%2Fstorage-units.java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metio","download_url":"https://codeload.github.com/metio/storage-units.java/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metio%2Fstorage-units.java/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31544087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","storage","storage-unit-converter"],"created_at":"2024-12-04T12:13:52.577Z","updated_at":"2026-04-08T07:02:34.521Z","avatar_url":"https://github.com/metio.png","language":"Java","funding_links":[],"categories":["java"],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: The Storage-Units Authors\nSPDX-License-Identifier: 0BSD\n --\u003e\n\n# Storage-Units [![Chat](https://img.shields.io/badge/irc.libera.chat-%23metio-blue.svg)](ircs://irc.libera.chat:6697/#metio)\n\nStorage units according to ISO IEC 80000-13:2008 implemented in Java.\n\n## Features\n\n* Immutable, type- and thread-safe object model for storage units\n* Convenience factories to create units\n* Basic arithmetic operators\n* Comparisons and equality checks between units\n* Lossless conversion between all units\n* Human-readable text format, including custom formats\n* Compatible with any `java.lang.Number`\n* Custom serializers for Jackson, MongoDB, EclipseLink, and others\n\n### Available Units\n\n| Name     | Symbol | Exponential          | Absolute                                       |\n|----------|--------|----------------------|------------------------------------------------|\n| Byte     | B      | 2\u003csup\u003e0\u003c/sup\u003e Byte   | 1 Byte                                         |\n| Kibibyte | KiB    | 2\u003csup\u003e10\u003c/sup\u003e Byte  | 1 024 Byte                                     |\n| Mebibyte | MiB    | 2\u003csup\u003e20\u003c/sup\u003e Byte  | 1 048 576 Byte                                 |\n| Gibibyte | GiB    | 2\u003csup\u003e30\u003c/sup\u003e Byte  | 1 073 741 824 Byte                             |\n| Tebibyte | TiB    | 2\u003csup\u003e40\u003c/sup\u003e Byte  | 1 099 511 627 776 Byte                         |\n| Pebibyte | PiB    | 2\u003csup\u003e50\u003c/sup\u003e Byte  | 1 125 899 906 842 624 Byte                     |\n| Exbibyte | EiB    | 2\u003csup\u003e60\u003c/sup\u003e Byte  | 1 152 921 504 606 846 976 Byte                 |\n| Zebibyte | ZiB    | 2\u003csup\u003e70\u003c/sup\u003e Byte  | 1 180 591 620 717 411 303 424 Byte             |\n| Yobibyte | YiB    | 2\u003csup\u003e80\u003c/sup\u003e Byte  | 1 208 925 819 614 629 174 706 176 Byte         |\n| Robibyte | RiB    | 2\u003csup\u003e90\u003c/sup\u003e Byte  | 1 237 940 039 285 380 274 899 124 224 Byte     |\n| Qubibyte | QiB    | 2\u003csup\u003e100\u003c/sup\u003e Byte | 1 267 650 600 228 229 401 496 703 205 376 Byte |\n\n| Name       | Symbol | Exponential          | Absolute                                       |\n|------------|--------|----------------------|------------------------------------------------|\n| Byte       | B      | 10\u003csup\u003e0\u003c/sup\u003e Byte  | 1 Byte                                         |\n| Kilobyte   | KB     | 10\u003csup\u003e3\u003c/sup\u003e Byte  | 1 000 Byte                                     |\n| Megabyte   | MB     | 10\u003csup\u003e6\u003c/sup\u003e Byte  | 1 000 000 Byte                                 |\n| Gigabyte   | GB     | 10\u003csup\u003e9\u003c/sup\u003e Byte  | 1 000 000 000 Byte                             |\n| Terabyte   | TB     | 10\u003csup\u003e12\u003c/sup\u003e Byte | 1 000 000 000 000 Byte                         |\n| Petabyte   | PB     | 10\u003csup\u003e15\u003c/sup\u003e Byte | 1 000 000 000 000 000 Byte                     |\n| Exabyte    | EB     | 10\u003csup\u003e18\u003c/sup\u003e Byte | 1 000 000 000 000 000 000 Byte                 |\n| Zettabyte  | ZB     | 10\u003csup\u003e21\u003c/sup\u003e Byte | 1 000 000 000 000 000 000 000 Byte             |\n| Yottabyte  | YB     | 10\u003csup\u003e24\u003c/sup\u003e Byte | 1 000 000 000 000 000 000 000 000 Byte         |\n| Ronnabyte  | RB     | 10\u003csup\u003e27\u003c/sup\u003e Byte | 1 000 000 000 000 000 000 000 000 000 Byte     |\n| Quettabyte | QB     | 10\u003csup\u003e30\u003c/sup\u003e Byte | 1 000 000 000 000 000 000 000 000 000 000 Byte |\n\n## Usage\n\n### Factories\n\nEach unit implements a Byte-based static factory method (`valueOf(BigInteger)` or `valueOf(long)`) that can be used to represent a given number of bytes in a specific unit. Note that `Long.MAX_VALUE == 8 Exabyte`, thus use `BigInteger` if you want to work with anything bigger than a eight Exabyte. When in doubt, always use `BigInteger`.\n\n```java\n// 'long' based\nKilobyte unit = Kilobyte.valueOf(500)                           // 500 Byte or \"0.50 kB\"\nKibibyte unit = Kibibyte.valueOf(512)                           // 512 Byte or \"0.50 KiB\"\n\nMegabyte unit = Megabyte.valueOf(1_000_000)                     // 1 000 000 Byte or \"1.00 MB\"\nMebibyte unit = Mebibyte.valueOf(1_048_576)                     // 1 048 576 Byte or \"1.00 MiB\"\n\n// 'BigInteger' based\nKilobyte unit = Kilobyte.valueOf(BigInteger.valueOf(500))       // 500 Byte or \"0.50 kB\"\nKibibyte unit = Kibibyte.valueOf(BigInteger.valueOf(512))       // 512 Byte or \"0.50 KiB\"\n\nMegabyte unit = Megabyte.valueOf(BigInteger.valueOf(1000000))   // 1 000 000 Byte or \"1.00 MB\"\nMebibyte unit = Mebibyte.valueOf(BigInteger.valueOf(1_048_576)) // 1 048 576 Byte or \"1.00 MB\"\n```\n\nThe `StorageUnits` class offers three factory methods that automatically pick the best-matching unit for a given number of bytes.\n\n#### Binary Units\n\n```java\n// 'long' based\nStorageUnit\u003c?\u003e unit = StorageUnits.binaryValueOf(256)                         // Kibibyte (0.25 KiB)\nStorageUnit\u003c?\u003e unit = StorageUnits.binaryValueOf(1048576)                     // Mebibyte (1.00 MiB)\n\n// 'BigInteger' based\nStorageUnit\u003c?\u003e unit = StorageUnits.binaryValueOf(BigInteger.valueOf(256))     // Kibibyte (0.25 MiB)\nStorageUnit\u003c?\u003e unit = StorageUnits.binaryValueOf(BigInteger.valueOf(1048576)) // Mebibyte (1.00 MiB)\n```\n\n#### Decimal Units\n\n```java\n// 'long' based\nStorageUnit\u003c?\u003e unit = StorageUnits.decimalValueOf(120000)                      // Kilobyte (120.00 kB)\nStorageUnit\u003c?\u003e unit = StorageUnits.decimalValueOf(1000000)                     // Megabyte (1.00 MB)\n\n// 'BigInteger' based\nStorageUnit\u003c?\u003e unit = StorageUnits.decimalValueOf(BigInteger.valueOf(120000))  // Kilobyte (120.00 kB)\nStorageUnit\u003c?\u003e unit = StorageUnits.decimalValueOf(BigInteger.valueOf(1000000)) // Megabyte (1.00 MB)\n```\n\nAdditionally high-level factory methods are also available in the `StorageUnits` class.\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\nKibibyte unit = kibibyte(1)   // 1 024 Byte\nMebibyte unit = mebibyte(1)   // 1 048 576 Byte\nGibibyte unit = gibibyte(1)   // 1 073 741 824 Byte\nTebibyte unit = tebibyte(1)   // 1 099 511 627 776 Byte\nPebibyte unit = pebibyte(1)   // 1 125 899 906 842 624 Byte\nExbibyte unit = exbibyte(1)   // 1 152 921 504 606 846 976 Byte\nZebibyte unit = zebibyte(1)   // 1 180 591 620 717 411 303 424 Byte\nYobibyte unit = yobibyte(1)   // 1 208 925 819 614 629 174 706 176 Byte\nRobibyte unit = robibyte(1)   // 1 237 940 039 285 380 274 899 124 224 Byte\nQubibyte unit = qubibyte(1)   // 1 267 650 600 228 229 401 496 703 205 376 Byte\n\nKilobyte unit = kilobyte(1)     // 1 000 Byte\nMegabyte unit = megabyte(1)     // 1 000 000 Byte\nGigabyte unit = gigabyte(1)     // 1 000 000 000 Byte\nTerabyte unit = terabyte(1)     // 1 000 000 000 000 Byte\nPetabyte unit = petabyte(1)     // 1 000 000 000 000 000 Byte\nExabyte unit = exabyte(1)       // 1 000 000 000 000 000 000 Byte\nZettabyte unit = zettabyte(1)   // 1 000 000 000 000 000 000 000 Byte\nYottabyte unit = yottabyte(1)   // 1 000 000 000 000 000 000 000 000 Byte\nRonnabyte unit = ronnabyte(1)   // 1 000 000 000 000 000 000 000 000 000 Byte\nQuettabyte unit = quettabyte(1) // 1 000 000 000 000 000 000 000 000 000 000 Byte\n```\n\n### Add, Subtract, Multiply, Divide\n\nEach unit implements the basic four math operations. All operations retain their original type, e.g. `[Kilobyte] + [Megabyte] = [Kilobyte]`\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\nkilobyte(4).add(kilobyte(8))        // 4 Kilobyte + 8 Kilobyte = 12 Kilobyte = 12 000 Byte\nkibibyte(1).add(1024)               // 1 Kibibyte + 1 024 Byte = 2 Kibibyte = 2 048 Byte\nkibibyte(1).subtract(24)            // 1 024 Byte - 24 Byte = 1 000 Byte\nmegabyte(5).subtract(kilobyte(500)) // 5 Megabyte - 500 Kilobyte = 4.5 Megabyte = 4 500 Kilobyte = 4 500 000 Byte\ngigabyte(1).multiply(5)             // 1 Gigabyte times 5 = 5 Gigabyte\nterabyte(1).divide(5)               // 1 Terabyte divided by 5 = 0.2 Terabyte = 200 Gigabyte\n```\n\n### Comparison \u0026 Equality\n\nEach unit is comparable to each other unit.\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\nkibibyte(1024).compareTo(mebibyte(1)) == 0 // true\nkibibyte(1000).compareTo(mebibyte(1)) == 0 // false\npetabyte(3).compareTo(terabyte(3000)) == 0 // true\n\nmegabyte(1000).equals(gigabyte(1))         // true\nmegabyte(1024).equals(gigabyte(1))         // false\nterabyte(12).equals(gigabyte(12000))       // true\n```\n\n### Formatting\n\nEach unit prints a human-readable string, representing the amount of bytes in the given unit using the symbol specified in ISO IEC 80000-13:2008.\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\n// default pattern '0.00'\nterabyte(2).toString()                         // \"2.00 TB\"\ngigabyte(1).add(megabyte(200)).toString()      // \"1.20 GB\"\npetabyte(1).subtract(terabyte(250)).toString() // \"0.75 PB\"\n\n// use custom pattern\nkilobyte(212345).toString(\"0.0\")                                    // \"212345.0 kB\"\ngibibyte(2123458).asTebibyte().toString(\"#,###.000\")                // \"2,073.689 TiB\"\nkilobyte(120).asMegabyte().add(gigabyte(1)).toString(\"#,##0.00000\") // \"1,000.12000 MB\"\n\n// use custom pattern with specific Locale\nkilobyte(212345).toString(\"0.0\", Locale.GERMAN)                     // \"212345,0 kB\"\ngibibyte(2123458).asTebibyte().toString(\"#,###.000\", Locale.GERMAN) // \"2.073,689 TiB\"\n\n// use custom format\nFormat customFormat = new DecimalFormat(\"#.00000\");\nterabyte(4).asTebibyte().toString(customFormat) // \"3.63798 TiB\"\n\n// without creating unit type first\nlong numberOfBytes = 1_000_000_000_000_000L;\nformatAsPetabyte(numberOfBytes) // \"1.00 PB\"\nformatAsTerabyte(numberOfBytes) // \"1000.00 TB\"\nformatAsPebibyte(numberOfBytes) // \"0.89 PiB\"\n\n// use custom pattern\nformatAsTerabyte(numberOfBytes, \"#0.#####\") // \"1000 TB\"\nformatAsPebibyte(numberOfBytes, \"#0.#####\") // \"0.88818 PiB\"\n\n// use custom pattern with specific Locale\nformatAsTerabyte(numberOfBytes, \"#0.#####\", Locale.GERMAN) // \"1000 TB\"\nformatAsPebibyte(numberOfBytes, \"#0.#####\", Locale.GERMAN) // \"0,88818 PiB\"\n\n// use custom format\nformatAsTerabyte(numberOfBytes, customFormat) // \"1000.00000 TB\"\nformatAsPebibyte(numberOfBytes, customFormat) // \".88818 PiB\"\n```\n\n### Conversions\n\nEach unit can be converted to each other unit without loss of information.\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\nMegabyte unit = kilobyte(1000).asMegabyte() // \"1.00 MB\"\nKilobyte unit = gigabyte(12).asKilobyte()   // \"12000000.00 kB\"\nGigabyte unit = terabyte(1).asGigabyte()    // \"1000.00 GB\"\n\n// convert to best-match\nkilobyte(1100).asBestMatchingUnit()          // \"1.10 MB\"\nkilobyte(1100).asBestMatchingBinaryUnit()    // \"1.05 MiB\"\nkilobyte(1100).asBestMatchingDecimalUnit()   // \"1.10 MB\"\n```\n\nEach unit can be expressed as a fraction of another unit (precise up to 24 decimal places)\n\n```java\nimport static wtf.metio.storageunits.model.StorageUnits.*;\n\nBigDecimal kilobytes = megabyte(1).inKilobyte()  // 1 000\nBigInteger bytes = kibibyte(2).inByte()          // 2 048\nBigDecimal terabytes = gigabyte(15).inTerabyte() // 0.015\n```\n\n### Serialization/Converters/Mappers\n\nMultiple custom serializers, converters, and mappers are available for all storage units.\n\n#### Dozer\n\nUse a [Dozer](https://dozermapper.github.io/) converter like this:\n\n```java\nimport static wtf.metio.storageunits.dozer.*;\n\nDozerBeanMapperBuilder.create()\n        .withCustomConverter(new BigIntegerBinaryStorageUnitConverter())\n        .withCustomConverter(new BigIntegerDecimalStorageUnitConverter())\n        .withCustomConverter(new LongBinaryStorageUnitConverter())\n        .withCustomConverter(new LongDecimalStorageUnitConverter())\n        .build();\n```\n\n#### EclipseLink\n\nUse any of the three converters like this:\n\n```java\nimport static wtf.metio.storageunits.eclipselink.*;\n\n@Entity\npublic class HardDisk implements Serializable {\n\n    @Basic\n    @Converter (\n        name=\"binaryConverter\",\n        converterClass=BinaryStorageUnitConverter.class\n    )\n    @Convert(\"binaryConverter\")\n    public StorageUnit\u003c?\u003e getFreeSize() {\n        return freeSize;\n    }\n\n    @Basic\n    @Converter (\n        name=\"decimalConverter\",\n        converterClass=DecimalyStorageUnitConverter.class\n    )\n    @Convert(\"decimalConverter\")\n    public StorageUnit\u003c?\u003e getTotalSize() {\n        return totalSize;\n    }\n\n}\n```\n\n#### GSON\n\nUse a [GSON](https://github.com/google/gson) serializer/deserializer like this:\n\n```java\nimport static wtf.metio.storageunits.gson.*;\n\nnew GsonBuilder()\n        .registerTypeHierarchyAdapter(StorageUnit.class, new StorageUnitSerializer())\n        .registerTypeHierarchyAdapter(StorageUnit.class, new BinaryStorageUnitDeserializer())\n        .registerTypeHierarchyAdapter(StorageUnit.class, new DecimalStorageUnitDeserializer())\n        .create();\n```\n\n#### Jackson\n\nUse the provided `StorageUnitModule` like this:\n\n```java\nimport static wtf.metio.storageunits.jackson.*;\n\nObjectMapper objectMapper = new ObjectMapper();\nobjectMapper.registerModule(new StorageUnitModule()); // defaults to binary units\nobjectMapper.registerModule(new StorageUnitModule(StorageUnitModule.PreferredUnitType.BINARY));\nobjectMapper.registerModule(new StorageUnitModule(StorageUnitModule.PreferredUnitType.DECIMAL));\n```\n\n#### Jakarta\n\nUse the provided `AttributeConverter`s like this:\n\n```java\nimport static wtf.metio.storageunits.jakarta.*;\n\n@Entity\npublic class HardDisk implements Serializable {\n\n    @Convert(converter = BinaryStorageUnitConverter.class)\n    public StorageUnit\u003c?\u003e getFreeSize() {\n        return freeSize;\n    }\n\n    @Convert(converter = DecimalStorageUnitConverter.class)\n    public StorageUnit\u003c?\u003e getTotalSize() {\n        return totalSize;\n    }\n\n}\n```\n\n#### MapStruct\n\nUse any of the available mappers like this:\n\n```java\nimport static wtf.metio.storageunits.mapstruct.*;\n\n@Mapper( uses = BigIntegerToBinaryUnitMapper.class )\npublic interface MovieMapper {\n\n     DestinationType toDestination(SourceType sourceValue);\n\n}\n```\n\n#### ModelMapper\n\nUse any of the available converters like this:\n\n```java\nimport static wtf.metio.storageunits.modelmapper.*;\n\nmodelMapper.addConverter(new BigIntegerToBinaryUnitConverter());\nmodelMapper.addConverter(new BigIntegerToDecimalUnitConverter());\nmodelMapper.addConverter(new LongToBinaryUnitConverter());\nmodelMapper.addConverter(new LongToDecimalUnitConverter());\nmodelMapper.addConverter(new StorageUnitToBigIntegerConverter());\n```\n\n#### MongoDB\n\nUse any of the three codecs like this:\n\n```java\nimport static wtf.metio.storageunits.mongodb.*;\n\nCodecRegistry binaryRegistry = CodecRegistries.fromCodecs(new BinaryStorageUnitCodec(), ...);\nCodecRegistry decimalRegistry = CodecRegistries.fromCodecs(new DecimalStorageUnitCodec(), ...);\n```\n\n#### Orika\n\nUse any of the provided converters like this:\n\n```java\nimport static wtf.metio.storageunits.orika.*;\n\nConverterFactory converterFactory = mapperFactory.getConverterFactory();\nconverterFactory.registerConverter(new BinaryStorageUnitConverter());\nconverterFactory.registerConverter(new DecimalStorageUnitConverter());\n```\n\n### Integration\n\nTo use this project just declare the following dependency inside your POM:\n\n```xml\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-model\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n\n    \u003c!-- Dozer ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-dozer\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- Dozer ONLY --\u003e\n\n    \u003c!-- EclipseLink ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-eclipselink\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- EclipseLink ONLY --\u003e\n\n    \u003c!-- GSON ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-gson\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- GSON ONLY --\u003e\n\n    \u003c!-- Jackson ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-jackson\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- Jackson ONLY --\u003e\n\n    \u003c!-- Jakarta ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-jakarta\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- Jakarta ONLY --\u003e\n\n    \u003c!-- MapStruct ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-mapstruct\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- MapStruct ONLY --\u003e\n\n    \u003c!-- ModelMapper ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-modelmapper\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- ModelMapper ONLY --\u003e\n\n    \u003c!-- MongoDB ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-mongodb\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- MongoDB ONLY --\u003e\n\n    \u003c!-- Orika ONLY --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ewtf.metio.storage-units\u003c/groupId\u003e\n        \u003cartifactId\u003estorage-units-orika\u003c/artifactId\u003e\n        \u003cversion\u003e${version.storage-units}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \u003c!-- Orika ONLY --\u003e\n\u003c/dependencies\u003e\n```\n\nReplace `${version.storage-units}` with the [latest release](https://central.sonatype.com/namespace/wtf.metio.storage-units).\n\n## Reference\n\nOriginally inspired by [Twitters util](https://github.com/twitter/util#space) package.\n\n## Alternatives\n\n* [Byte Units](https://github.com/JakeWharton/byteunits)\n* [triava](https://github.com/trivago/triava)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetio%2Fstorage-units.java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetio%2Fstorage-units.java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetio%2Fstorage-units.java/lists"}