BinaryKit alternatives and similar libraries
Based on the "Data Structures / Algorithms" category.
Alternatively, view BinaryKit alternatives based on common mentions on social networks and blogs.
-
KeyPathKit
KeyPathKit is a library that provides the standard functions to manipulate data along with a call-syntax that relies on typed keypaths to make the call sites as short and clean as possible. -
RandMyMod
RandMyMod base on your own struct or class create one or a set of instance, which the variable's value in the instance is automatic randomized. -
OneWaySynchronizer
The simplest abstraction to synchronize local data with remote source. For iOS, wirtten in swift.
CodeRabbit: AI Code Reviews for Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of BinaryKit or a related project?
README
BinaryKit
BinaryKit helps you to break down binary data into bits and bytes, easily access specific parts and write data to binary.
Access Bytes
By using any read*
method (readByte()
, readBytes(quantity:)
, readBit()
, โฆ), BinaryKit will increment an internal cursor (or reading offset) to the end of the requested bit or byte, so the next read*
method can continue from there.
Any get*
method (getByte(index:)
, getBytes(range:)
, getBit(index:)
, โฆ) will give access to binary data at any given location โ without incrementing the internal cursor.
Here are the methods you can call:
var binary = Binary(bytes: [0xDE, 0xAD, 0xBE, 0xEF, โฆ])
// Reads exactly 1 byte and
// increments the cursor by 1 byte
try binary.readByte()
// Reads the next 4 bytes and
// increments the cursor by 4 bytes
try binary.readBytes(4)
// Reads the next 1 bit and
// increments the cursor by 1 bit
try binary.readBit()
// Reads the next 4 bits and
// increments the cursor by 4 bits
try binary.readBits(4)
Example
var binary = Binary(bytes: [0b1_1_0_1_1_1_0_0])
// | | | | | | | |
// | | | | | | | try binary.readBit() // 0
// | | | | | | try binary.readBit() // 0
// | | | | | try binary.readBit() // 1
// | | | | try binary.readBit() // 1
// | | | try binary.readBit() // 1
// | | try binary.readBit() // 0
// | try binary.readBit() // 1
// try binary.readBit() // 1
This shows how easy it is, to break down an IPv4 header.
var binary = Binary(bytes: [0x1B, 0x44, โฆ])
let version = try binary.readBits(4)
let internetHeaderLength = try binary.readBits(4)
let differentiatedServicesCodePoint = try binary.readBits(6)
let explicitCongestionNotification = try binary.readBits(2)
let totalLength = try binary.readBytes(2)
let identification = try binary.readBytes(2)
let flags = try binary.readBits(4)
let fragmentOffset = try binary.readBits(12)
let timeToLive = try binary.readByte()
let protocolNumber = try binary.readByte()
let headerChecksum = try binary.readBytes(2)
let sourceIpAddress = try binary.readBytes(4)
let destinationIpAddress = try binary.readBytes(4)
...
Store Bytes
Use the write*
methods to store different types to binary.
var binary = Binary()
binary.writeInt32(1_350_849_546)
binary.writeString("Hello World!")
binary.writeBytes([0xFF, 0xCC, 0x00, 0x01])
binary.writeBool(true)
Contact
- Devran "Cosmo" Uenal
- Twitter: @maccosmo
- LinkedIn: devranuenal
Other Projects
- Clippy โ Clippy from Microsoft Office is back and runs on macOS! Written in Swift.
- GrammaticalNumber โ Turns singular words to the plural and vice-versa in Swift.
- HackMan โ Stop writing boilerplate code yourself. Let hackman do it for you via the command line.
- ISO8859 โ Convert ISO8859 1-16 Encoded Text to String in Swift. Supports iOS, tvOS, watchOS and macOS.
- SpriteMap โ SpriteMap helps you to extract sprites out of a sprite map. Written in Swift.
- StringCase โ Converts String to lowerCamelCase, UpperCamelCase and snake_case. Tested and written in Swift.
- TinyConsole โ TinyConsole is a micro-console that can help you log and display information inside an iOS application, where having a connection to a development computer is not possible.
License
BinaryKit is released under the MIT License.
*Note that all licence references and agreements mentioned in the BinaryKit README section above
are relevant to that project's source code only.