Bytes

A simple Swift library for working with byte buffers.

Installation

Swift Package Manager

To use Bytes with Swift Package Manager, add the following line to the dependencies array in your Package.swift file:

.package(url: "https://github.com/ajotaos/swift-bytes.git", from: "1.0.0")

Then, add the "Bytes" dependency to your target:

.target(name: "MyTarget", dependencies: ["Bytes"])

Usage

Here's a quick example showing how to create a ByteBuffer, write some bytes to it, and then read those bytes back:

var buffer = ByteBuffer()
buffer.write(bytes: [0x41, 0x42, 0x43])
let bytes = buffer.bytes(count: 3)
print(bytes) // Output: [65, 66, 67]

You can also write integers, floating-point numbers, and strings to a ByteBuffer:

var buffer = ByteBuffer()
buffer.write(integer: UInt32(1234))
buffer.write(floatingPoint: Float32(3.14))
buffer.write(string: "hello")

To read these values back, you can use the corresponding integer, floatingPoint, and string methods:

let int: Int = buffer.integer(as: UInt32.self)
let float: Float = buffer.floatingPoint(as: Float32.self)
let string: String = buffer.string(count: 5)

Unsafe Access

Bytes provides a couple of methods that allow for unsafe access to the raw bytes of a ByteBuffer. These methods are withUnsafeBytes and withUnsafeMutableBytes. Use these methods with care, as they can easily lead to undefined behavior if used incorrectly.

Here's an example of how to use withUnsafeBytes:

let buffer = ByteBuffer(bytes: [0x41, 0x42, 0x43])
let count = buffer.withUnsafeBytes { bytes in
    let ptr = bytes.bindMemory(to: UInt8.self).baseAddress!
    // Do something with the raw bytes here
    return bytes.count
}
print(count) // Output: 3

License

Bytes is released under the MIT license. See LICENSE for details.