• About TC
  • Affiliate Disclaimer
  • Privacy Policy
  • TOS
  • Contact
Tuesday, July 8, 2025
Techcratic
  • TC
  • AI
    Artificial Intelligence

    Build a just-in-time knowledge base with Amazon Bedrock

    Artificial Intelligence

    Transforming network operations with AI: How Swisscom built a network assistant using Amazon Bedrock

    Artificial Intelligence

    EgoDex: Learning Dexterous Manipulation from Large-Scale Egocentric Video

    Artificial Intelligence

    Instruction-Following Pruning for Large Language Models

    Artificial Intelligence

    How to Combine Streamlit, Pandas, and Plotly for Interactive Data Apps

    Artificial Intelligence

    Tailor responsible AI with new safeguard tiers in Amazon Bedrock Guardrails

    Artificial Intelligence

    Automate Data Quality Reports with n8n: From CSV to Professional Analysis

    Artificial Intelligence

    NewDay builds A Generative AI based Customer service Agent Assist with over 90% accuracy

    Artificial Intelligence

    5 Things You Need to Know About Agentic AI

  • Apple
    iPhone 17 Air rumor: New sky blue color

    iPhone 17 Air rumor: New sky blue color

    Apple @ Work Podcast: Fleet launches iOS device management

    Apple @ Work Podcast: Portability for Passkeys is coming to macOS

    macOS Tahoe 26 beta 3 now available, here’s what to expect

    macOS Tahoe 26 beta 3 now available, here’s what to expect

    Apple releases developer beta 3 for visionOS 26

    Apple releases developer beta 3 for visionOS 26

    Apple releases watchOS 26 beta 3, here’s what to expect

    Apple releases watchOS 26 beta 3, here’s what to expect

    Apple’s AI agent can describe Street View scenes to blind people

    Apple’s AI agent can describe Street View scenes to blind people

    Score AirPods from just $89

    Score AirPods from just $89

    Following hiccup, macOS 26 beta 3 now available for Apple Silicon

    Following hiccup, macOS 26 beta 3 now available for Apple Silicon

    Kingston IronKey Vault Privacy 80 review: Specs, features, price

    Kingston IronKey Vault Privacy 80 review: Specs, features, price

  • Gaming
    Police Checkpoint |As Dusk Falls Ep.25

    Police Checkpoint |As Dusk Falls Ep.25

    How to get the Amber Mutation in Grow a Garden

    How to get the Amber Mutation in Grow a Garden

    Diablo 4 Beta Review – Should It Be Delayed?

    Diablo 4 Beta Review – Should It Be Delayed?

    Turn your wall into the ultimate PC gaming display with these Prime Day Valerion projector deals

    Turn your wall into the ultimate PC gaming display with these Prime Day Valerion projector deals

    Sonic Frontiers: Was Update 2 ACTUALLY Good? Review

    Let's Talk About Gotham Knights’ Predictable Ending

    Let's Talk About Gotham Knights’ Predictable Ending

    Linus Torvalds has apparently met Bill Gates for the first time in person and before you ask, no he didn’t clock him in the face

    Racks packing Nvidia’s newest and shiniest AI supercomputer Blackwell Ultra cards have just been deployed by CoreWeave

    Gungrave G.O.R.E | Gameplay Walkthrough Part 32  No commentary (PC)

    Gungrave G.O.R.E | Gameplay Walkthrough Part 32 No commentary (PC)

    Linus Torvalds has apparently met Bill Gates for the first time in person and before you ask, no he didn’t clock him in the face

    This striking two-toned mini PC features a fully customised fanless cooling system for Framework and AMD’s new Halo Strix motherboards

  • Retro Rewind
    Retro Rewind: Electronic Games April 1995

    Retro Rewind: Electronic Games April 1995

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

    Retro Rewind: Electronic Gaming Monthly Magazine Number 57 April 1994

    Retro Rewind: Blast from the Past – 35 Iconic Commercials of 1988!

    Retro Rewind: Blast from the Past – 35 Iconic Commercials of 1988!

    Retro Rewind: PC World Magazine August 1998

    Retro Rewind: PC World Magazine August 1998

    Retro Rewind: Computer Shopper Magazine September 1997

    Retro Rewind: Computer Shopper Magazine September 1997

    Retro Rewind: PC Magazine December 2015

    Retro Rewind: PC Magazine December 2015

    Retro Rewind: EDGE Magazine RETRO #1: The Guide to Classic Videogame Playing and Collecting

    Retro Rewind: EDGE Magazine RETRO #1: The Guide to Classic Videogame Playing and Collecting

    Retro Rewind: Computer Gaming World Magazine Issue 73 December 1998

    Retro Rewind: Computer Gaming World Magazine Issue 73 December 1998

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

  • Tech Deals
    Long HDMI 2.1 Cable 30FT – 8K 60hz,Ultra High Speed HDMI Cable 4K 120hz…

    Long HDMI 2.1 Cable 30FT – 8K 60hz,Ultra High Speed HDMI Cable 4K 120hz…

    acer 7-in-1 Wireless Charging Station: Charger Stand for Multiple Devices for Apple -…

    acer 7-in-1 Wireless Charging Station: Charger Stand for Multiple Devices for Apple -…

    Rii RK100+ Multiple Color Rainbow LED Backlit Large Size USB Wired Mechanical Feeling…

    Rii RK100+ Multiple Color Rainbow LED Backlit Large Size USB Wired Mechanical Feeling…

    FC100 Gaming Headset with Microphone for PS4, PS5, Switch, Xbox, PC, Mac, Gamer Headset…

    FC100 Gaming Headset with Microphone for PS4, PS5, Switch, Xbox, PC, Mac, Gamer Headset…

    Killzone 2 – Playstation 3 (Renewed)

    Killzone 2 – Playstation 3 (Renewed)

    StarTech.com 10ft CAT6a Ethernet Cable – 10 Gigabit Shielded Snagless RJ45 100W PoE…

    StarTech.com 10ft CAT6a Ethernet Cable – 10 Gigabit Shielded Snagless RJ45 100W PoE…

    TAGRY Bluetooth Headphones True Wireless Earbuds 60H Playback LED Power Display…

    TAGRY Bluetooth Headphones True Wireless Earbuds 60H Playback LED Power Display…

    Samsung SSD 9100 PRO 4TB, PCIe 5.0×4 M.2 2280, Seq. Read Speeds Up to 14,800MB/s, Best…

    Samsung SSD 9100 PRO 4TB, PCIe 5.0×4 M.2 2280, Seq. Read Speeds Up to 14,800MB/s, Best…

    ORICO 2TB NVMe SSD PCIe 4.0 – Up to 7000MB/s, M.2 2280 Internal Solid State Drive, Fast…

    ORICO 2TB NVMe SSD PCIe 4.0 – Up to 7000MB/s, M.2 2280 Internal Solid State Drive, Fast…

  • Tesla
    Side View Mirror Cover with Tesla Cybertruck,Matte Carbon Fiber Pattern Rearview Mirror…

    Side View Mirror Cover with Tesla Cybertruck,Matte Carbon Fiber Pattern Rearview Mirror…

    For Tesla Model Y 2025 2026 Juniper& 2024-2025 Model 3 Highland Glossy Screen Protector…

    For Tesla Model Y 2025 2026 Juniper& 2024-2025 Model 3 Highland Glossy Screen Protector…

    Uireefly Center Console Wireless Charging Mat for Tesla Cybertruck 2024, Anti-Slip…

    Uireefly Center Console Wireless Charging Mat for Tesla Cybertruck 2024, Anti-Slip…

    Car Tow Hook Decor, V Shape Trailer Hook Sticker for Car Bumper, Auto Bumper Trailer Tow…

    Car Tow Hook Decor, V Shape Trailer Hook Sticker for Car Bumper, Auto Bumper Trailer Tow…

    Tesla employees try to oust Elon, new Volvo, and Micah’s close call

    America – it’s a party now! Plus: an electric Honda Ruckus!

    Heavy Duty D-Rings For Tesla Cybertruck 2023 2024 2025 4pcs Ring Truck Bed Hooks…

    Heavy Duty D-Rings For Tesla Cybertruck 2023 2024 2025 4pcs Ring Truck Bed Hooks…

    Tesla was forced to reimburse Full Self-Driving in arbitration after failing to deliver

    3D MAXpider Custom Fit Kagu Floor Mat (Black) Compatible with Tesla Model S 2021-2025 -…

    3D MAXpider Custom Fit Kagu Floor Mat (Black) Compatible with Tesla Model S 2021-2025 -…

    Tesla will pause part of new Model Y production for 3 weeks for upgrades, report says

    Elon Musk realized too late how badly Tesla will hurt from Trump’s bill

  • UFO
    Sun Halo A Natural Phenomena #viralvideo

    Sun Halo A Natural Phenomena #viralvideo

    BulbaCraft UFO Stickers, Alien Stickers for Water Bottle and Laptop – UFO Party Favors & Decorations, Waterproof Vinyl Decals, Gifts for Women & Men

    BulbaCraft UFO Stickers, Alien Stickers for Water Bottle and Laptop – UFO Party Favors & Decorations, Waterproof Vinyl Decals, Gifts for Women & Men

    I Married a Monster From Outer Space

    I Married a Monster From Outer Space

    Space Theme Birthday Candle, Shiny Astronaut Number Candle Spaceship Outer Space Cake Topper Perfect Universe Rocket Spacecraft Cake Decorations and Party Favors(Number 6)

    Space Theme Birthday Candle, Shiny Astronaut Number Candle Spaceship Outer Space Cake Topper Perfect Universe Rocket Spacecraft Cake Decorations and Party Favors(Number 6)

    Paranormal Phenomena: Modern Tales of the Unexplained

    Paranormal Phenomena: Modern Tales of the Unexplained

    Top 5 UFO Encounters of 2025 | New Evidence Emerges

    Top 5 UFO Encounters of 2025 | New Evidence Emerges

    Electric Disc Launcher with 6 Flying Spinners, Glow in The Dark Rechargeable Outdoor Play Fun Sport Fidget Toys

    Electric Disc Launcher with 6 Flying Spinners, Glow in The Dark Rechargeable Outdoor Play Fun Sport Fidget Toys

    UFO COMMUNITY IN A FRENZY – “Like Something Out Of An Alien Movie” | Proof Is Out There | #Shorts

    Evil Brain From Outer Space (Retro Cover Art) [DVD]

    Evil Brain From Outer Space (Retro Cover Art) [DVD]

No Result
View All Result
  • TC
  • AI
    Artificial Intelligence

    Build a just-in-time knowledge base with Amazon Bedrock

    Artificial Intelligence

    Transforming network operations with AI: How Swisscom built a network assistant using Amazon Bedrock

    Artificial Intelligence

    EgoDex: Learning Dexterous Manipulation from Large-Scale Egocentric Video

    Artificial Intelligence

    Instruction-Following Pruning for Large Language Models

    Artificial Intelligence

    How to Combine Streamlit, Pandas, and Plotly for Interactive Data Apps

    Artificial Intelligence

    Tailor responsible AI with new safeguard tiers in Amazon Bedrock Guardrails

    Artificial Intelligence

    Automate Data Quality Reports with n8n: From CSV to Professional Analysis

    Artificial Intelligence

    NewDay builds A Generative AI based Customer service Agent Assist with over 90% accuracy

    Artificial Intelligence

    5 Things You Need to Know About Agentic AI

  • Apple
    iPhone 17 Air rumor: New sky blue color

    iPhone 17 Air rumor: New sky blue color

    Apple @ Work Podcast: Fleet launches iOS device management

    Apple @ Work Podcast: Portability for Passkeys is coming to macOS

    macOS Tahoe 26 beta 3 now available, here’s what to expect

    macOS Tahoe 26 beta 3 now available, here’s what to expect

    Apple releases developer beta 3 for visionOS 26

    Apple releases developer beta 3 for visionOS 26

    Apple releases watchOS 26 beta 3, here’s what to expect

    Apple releases watchOS 26 beta 3, here’s what to expect

    Apple’s AI agent can describe Street View scenes to blind people

    Apple’s AI agent can describe Street View scenes to blind people

    Score AirPods from just $89

    Score AirPods from just $89

    Following hiccup, macOS 26 beta 3 now available for Apple Silicon

    Following hiccup, macOS 26 beta 3 now available for Apple Silicon

    Kingston IronKey Vault Privacy 80 review: Specs, features, price

    Kingston IronKey Vault Privacy 80 review: Specs, features, price

  • Gaming
    Police Checkpoint |As Dusk Falls Ep.25

    Police Checkpoint |As Dusk Falls Ep.25

    How to get the Amber Mutation in Grow a Garden

    How to get the Amber Mutation in Grow a Garden

    Diablo 4 Beta Review – Should It Be Delayed?

    Diablo 4 Beta Review – Should It Be Delayed?

    Turn your wall into the ultimate PC gaming display with these Prime Day Valerion projector deals

    Turn your wall into the ultimate PC gaming display with these Prime Day Valerion projector deals

    Sonic Frontiers: Was Update 2 ACTUALLY Good? Review

    Let's Talk About Gotham Knights’ Predictable Ending

    Let's Talk About Gotham Knights’ Predictable Ending

    Linus Torvalds has apparently met Bill Gates for the first time in person and before you ask, no he didn’t clock him in the face

    Racks packing Nvidia’s newest and shiniest AI supercomputer Blackwell Ultra cards have just been deployed by CoreWeave

    Gungrave G.O.R.E | Gameplay Walkthrough Part 32  No commentary (PC)

    Gungrave G.O.R.E | Gameplay Walkthrough Part 32 No commentary (PC)

    Linus Torvalds has apparently met Bill Gates for the first time in person and before you ask, no he didn’t clock him in the face

    This striking two-toned mini PC features a fully customised fanless cooling system for Framework and AMD’s new Halo Strix motherboards

  • Retro Rewind
    Retro Rewind: Electronic Games April 1995

    Retro Rewind: Electronic Games April 1995

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

    Retro Rewind: Electronic Gaming Monthly Magazine Number 57 April 1994

    Retro Rewind: Blast from the Past – 35 Iconic Commercials of 1988!

    Retro Rewind: Blast from the Past – 35 Iconic Commercials of 1988!

    Retro Rewind: PC World Magazine August 1998

    Retro Rewind: PC World Magazine August 1998

    Retro Rewind: Computer Shopper Magazine September 1997

    Retro Rewind: Computer Shopper Magazine September 1997

    Retro Rewind: PC Magazine December 2015

    Retro Rewind: PC Magazine December 2015

    Retro Rewind: EDGE Magazine RETRO #1: The Guide to Classic Videogame Playing and Collecting

    Retro Rewind: EDGE Magazine RETRO #1: The Guide to Classic Videogame Playing and Collecting

    Retro Rewind: Computer Gaming World Magazine Issue 73 December 1998

    Retro Rewind: Computer Gaming World Magazine Issue 73 December 1998

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

    Retro Rewind: Electronic Gaming Monthly Magazine Number 55 February 1994

  • Tech Deals
    Long HDMI 2.1 Cable 30FT – 8K 60hz,Ultra High Speed HDMI Cable 4K 120hz…

    Long HDMI 2.1 Cable 30FT – 8K 60hz,Ultra High Speed HDMI Cable 4K 120hz…

    acer 7-in-1 Wireless Charging Station: Charger Stand for Multiple Devices for Apple -…

    acer 7-in-1 Wireless Charging Station: Charger Stand for Multiple Devices for Apple -…

    Rii RK100+ Multiple Color Rainbow LED Backlit Large Size USB Wired Mechanical Feeling…

    Rii RK100+ Multiple Color Rainbow LED Backlit Large Size USB Wired Mechanical Feeling…

    FC100 Gaming Headset with Microphone for PS4, PS5, Switch, Xbox, PC, Mac, Gamer Headset…

    FC100 Gaming Headset with Microphone for PS4, PS5, Switch, Xbox, PC, Mac, Gamer Headset…

    Killzone 2 – Playstation 3 (Renewed)

    Killzone 2 – Playstation 3 (Renewed)

    StarTech.com 10ft CAT6a Ethernet Cable – 10 Gigabit Shielded Snagless RJ45 100W PoE…

    StarTech.com 10ft CAT6a Ethernet Cable – 10 Gigabit Shielded Snagless RJ45 100W PoE…

    TAGRY Bluetooth Headphones True Wireless Earbuds 60H Playback LED Power Display…

    TAGRY Bluetooth Headphones True Wireless Earbuds 60H Playback LED Power Display…

    Samsung SSD 9100 PRO 4TB, PCIe 5.0×4 M.2 2280, Seq. Read Speeds Up to 14,800MB/s, Best…

    Samsung SSD 9100 PRO 4TB, PCIe 5.0×4 M.2 2280, Seq. Read Speeds Up to 14,800MB/s, Best…

    ORICO 2TB NVMe SSD PCIe 4.0 – Up to 7000MB/s, M.2 2280 Internal Solid State Drive, Fast…

    ORICO 2TB NVMe SSD PCIe 4.0 – Up to 7000MB/s, M.2 2280 Internal Solid State Drive, Fast…

  • Tesla
    Side View Mirror Cover with Tesla Cybertruck,Matte Carbon Fiber Pattern Rearview Mirror…

    Side View Mirror Cover with Tesla Cybertruck,Matte Carbon Fiber Pattern Rearview Mirror…

    For Tesla Model Y 2025 2026 Juniper& 2024-2025 Model 3 Highland Glossy Screen Protector…

    For Tesla Model Y 2025 2026 Juniper& 2024-2025 Model 3 Highland Glossy Screen Protector…

    Uireefly Center Console Wireless Charging Mat for Tesla Cybertruck 2024, Anti-Slip…

    Uireefly Center Console Wireless Charging Mat for Tesla Cybertruck 2024, Anti-Slip…

    Car Tow Hook Decor, V Shape Trailer Hook Sticker for Car Bumper, Auto Bumper Trailer Tow…

    Car Tow Hook Decor, V Shape Trailer Hook Sticker for Car Bumper, Auto Bumper Trailer Tow…

    Tesla employees try to oust Elon, new Volvo, and Micah’s close call

    America – it’s a party now! Plus: an electric Honda Ruckus!

    Heavy Duty D-Rings For Tesla Cybertruck 2023 2024 2025 4pcs Ring Truck Bed Hooks…

    Heavy Duty D-Rings For Tesla Cybertruck 2023 2024 2025 4pcs Ring Truck Bed Hooks…

    Tesla was forced to reimburse Full Self-Driving in arbitration after failing to deliver

    3D MAXpider Custom Fit Kagu Floor Mat (Black) Compatible with Tesla Model S 2021-2025 -…

    3D MAXpider Custom Fit Kagu Floor Mat (Black) Compatible with Tesla Model S 2021-2025 -…

    Tesla will pause part of new Model Y production for 3 weeks for upgrades, report says

    Elon Musk realized too late how badly Tesla will hurt from Trump’s bill

  • UFO
    Sun Halo A Natural Phenomena #viralvideo

    Sun Halo A Natural Phenomena #viralvideo

    BulbaCraft UFO Stickers, Alien Stickers for Water Bottle and Laptop – UFO Party Favors & Decorations, Waterproof Vinyl Decals, Gifts for Women & Men

    BulbaCraft UFO Stickers, Alien Stickers for Water Bottle and Laptop – UFO Party Favors & Decorations, Waterproof Vinyl Decals, Gifts for Women & Men

    I Married a Monster From Outer Space

    I Married a Monster From Outer Space

    Space Theme Birthday Candle, Shiny Astronaut Number Candle Spaceship Outer Space Cake Topper Perfect Universe Rocket Spacecraft Cake Decorations and Party Favors(Number 6)

    Space Theme Birthday Candle, Shiny Astronaut Number Candle Spaceship Outer Space Cake Topper Perfect Universe Rocket Spacecraft Cake Decorations and Party Favors(Number 6)

    Paranormal Phenomena: Modern Tales of the Unexplained

    Paranormal Phenomena: Modern Tales of the Unexplained

    Top 5 UFO Encounters of 2025 | New Evidence Emerges

    Top 5 UFO Encounters of 2025 | New Evidence Emerges

    Electric Disc Launcher with 6 Flying Spinners, Glow in The Dark Rechargeable Outdoor Play Fun Sport Fidget Toys

    Electric Disc Launcher with 6 Flying Spinners, Glow in The Dark Rechargeable Outdoor Play Fun Sport Fidget Toys

    UFO COMMUNITY IN A FRENZY – “Like Something Out Of An Alien Movie” | Proof Is Out There | #Shorts

    Evil Brain From Outer Space (Retro Cover Art) [DVD]

    Evil Brain From Outer Space (Retro Cover Art) [DVD]

No Result
View All Result
Techcratic
No Result
View All Result
Home Hacker News

EmberEmu/Hexi: Header-only, lightweight C++ library for binary streaming. Network data handling made easy peasy!

Hacker News by Hacker News
March 28, 2025
in Hacker News
Reading Time: 17 mins read
121
A A
0

2025-03-28 13:37:00
github.com

Hexi, Easy Peasy Binary Streaming




Hexi is a lightweight, header-only C++23 library for safely handling binary data from arbitrary sources (but primarily network data). It sits somewhere between manually memcpying bytes from network buffers and full-blown serialisation libraries.

The design goals are ease of use, safety when dealing with untrusted data, a reasonable level of flexibility, and keeping overhead to a minimum.

What Hexi doesn’t offer: versioning, conversion between different formats, handling of text-based formats, unloading the dishwasher.

Getting started

Incorporating Hexi into your project is simple! The easiest way is to simply copy hexi.h from single_include into your own project. If you’d rather only include what you use, you can add include to your include paths or incorporate it into your own CMake project with target_link_library. To build the unit tests, run CMake with ENABLE_TESTING.

Here’s what some libraries might call a very simple motivating example:

#include hexi.h>
#include array>
#include vector>
#include cstddef>

struct UserPacket {
    uint64_t user_id;
    uint64_t timestamp;
    std::arrayuint8_t, 16> ipv6;
};

auto deserialise(std::spanconst char> network_buffer) {
    hexi::buffer_adaptor adaptor(network_buffer); // wrap the buffer
    hexi::binary_stream stream(adaptor);          // create a binary stream
    
    // deserialise!
    UserPacket packet;
    stream >> packet;
    return packet;
}

auto serialise(const UserPacket& packet) {
    std::vectoruint8_t> buffer;
    hexi::buffer_adaptor adaptor(buffer); // wrap the buffer
    hexi::binary_stream stream(adaptor);  // create a binary stream
    
    // serialise!
    stream return buffer;
}

By default, Hexi will try to serialise basic structures such as our UserPacket if they meet requirements for being safe to directly copy the bytes. Now, for reasons of portability, it’s not recommended that you do things this way unless you’re positive that the data layout is identical on the system that wrote the data. Not to worry, this is easily solved. Plus, we didn’t do any error handling. All in good time.

Remember these two classes, if nothing else!

The two classes you’ll primarily deal with are buffer_adaptor and binary_stream.

binary_stream takes a container as its argument and is used to do the reading and writing. It doesn’t know much about the details of the underlying container.

To support containers that weren’t written to be used with Hexi, buffer_adaptor is used as a wrapper that binary_stream can interface with. As with binary_stream, it also provides read and write operations but at a lower level.

buffer_adaptor can wrap any contiguous container or view that provides data and size member functions and optionally resize() for write support. From the standard library, that means the following can be used out of the box:

Plenty of non-standard library containers will work out of the box, too, as long as they provide a vaguely similar API.

The container’s value type must be a byte type (e.g. char, std::byte, uint8_t). std::as_bytes can be used as a workaround if this poses a problem.

Hexi supports custom containers, including non-contiguous containers. In fact, there’s a non-contiguous container included in the library. You simply need to provide a few functions such as read and size to allow the binary_stream class to be able to use it.

static_buffer.h provides a simple example of a custom container that can be used directly with binary_stream.

As mentioned, Hexi is intended to be safe to use even when dealing with untrusted data. An example might be network messages that have been manipulated to try to trick your code into reading out of bounds.

binary_stream performs bounds checking to ensure that it will never read more data than the buffer has available and optionally allows you to specify an upper bound on the amount of data to read. This can be useful when you have multiple messages in a buffer and want to limit the deserialisation from potentially eating into the next.

buffer_t buffer;
// ... read data
hexi::binary_stream stream(buffer, 32); // will never read more than 32 bytes

Errors happen, it's up to you to handle 'em

The default error handling mechanism is exceptions. Upon encountering a problem with reading data, an exception derived from hexi::exception will be thrown. These are:

  • hexi::buffer_underrun – attempt to read out of bounds
  • hexi::stream_read_limit – attempt to read more than the imposed limit

Exceptions from binary_stream can be disabled by specifying no_throw as a template argument, as shown:

hexi::binary_stream stream(...);

While this prevents binary_stream itself from throwing, it does not prevent propagation of exceptions from lower levels. For example, a wrapped std::vector could still throw std::bad_alloc if allocation fails when writing to it.

Regardless of the error handling mechanism you use, the state of a binary_stream can be checked as follows:

hexi::binary_stream stream(...);
// ... assume an error happens

// simplest way to check whether any errors have occurred
if (!stream) {
    // handle error
}

// or we can get the state
if (auto state = stream.state(); state != hexi::stream_state::ok) {
    // handle error
}

Writing portable code is easy peasy

In the first example, reading our UserPacket would only work as expected if the program that wrote the data laid everything out in the same way as our own program.
This might not be the case for reasons of architecture differences, compiler flags, etc.

Here’s the same example but doing it portably.

#include hexi.h>
#include span>
#include string>
#include vector>
#include cstddef>
#include cstdint>

struct UserPacket {
    uint64_t user_id;
    std::string username;
    uint64_t timestamp;
    uint8_t has_optional_field;
    uint32_t optional_field;  // pretend this is big endian in the protocol

    // deserialise
    auto& operator>>(auto& stream) {
        stream >> user_id >> username >> timestamp >> has_optional_field;

        if (has_optional_field) {
            stream >> optional_field;
            hexi::endian::big_to_native_inplace(optional_field);
        }

        // we can manually trigger an error if something went wrong
        // stream.set_error_state();
        return stream;
    }

    // serialise
    auto& operatorauto& stream) const {
        stream if (has_optional_field) {
            stream hexi::endian::native_to_big(optional_field);
        }

        return stream;
    }
};

// pretend we're reading network data
void read() {
    std::vectorchar> buffer;
    const auto bytes_read = socket.read(buffer);

    // ... logic for determing packet type, etc

    bool result {};

    switch (packet_type) {
        case packet_type::user_packet:
            result = handle_user_packet(buffer);
            break;
    }

    // ... handle result
}

auto handle_user_packet(std::spanconst char> buffer) {
    hexi::buffer_adaptor adaptor(buffer);
    hexi::binary_stream stream(adaptor);

    UserPacket packet;
    stream >> packet;

    if (stream) {
        // ... do something with the packet
        return true;
    } else {
        return false;
    }
}

Because binary_stream is a template, it’s easiest to allow the compiler to perform type deduction magic.

If you want the function bodies to be in a source file, it’s recommended that you provide your own using alias for your binary_stream type.
The alternative is to use the polymorphic equivalents, pmc::buffer_adaptor and pmc::binary_stream, which allow you to change the underlying buffer type at runtime but at the cost of virtual call overhead and lacking some functionality that doesn’t mesh well with polymorphism.

How you structure your code is up to you, this is just one way of doing it.

Uh, one more thing...

When using binary_stream, strings are always treated as null-terminated. Writing a char*, std::string_view or std::string will always write a terminating byte to the stream. If you require otherwise, use one of the put functions.

Likewise, reading to std::string assumes the buffer contains a null-terminator. If it does not, an empty string will be returned. If you know the length of the string or need to support a custom terminating/sentinel value, use get() and find_first_of().

What else is in the box?

Here’s a very quick rundown on some of the included extras.

  • hexi::file_buffer
    • For dealing with binary files. Simples.
  • hexi::static_buffer
    • Fixed-size networking buffer for when you know the upper bound on the amount of data you’ll need to send or receive in one go. Essentially a wrapper around std::array but with added state tracking. Handy if you need to deserialise in multiple steps (read packet header, dispatch, read packet body).
  • hexi::dynamic_buffer
    • Resizeable buffer for when you want to deal with occasional large read/writes without having to allocate the space up front. Internally, it adds additional allocations to accomodate extra data rather than requesting a larger allocation and copying data as std::vector would. It reuses allocated blocks where possible and has support for Asio (Boost or standalone). Effectively, it’s a linked list buffer.
  • hexi::tls_block_allocator
    • Allows many instances of dynamic_buffer to share a larger pool of pre-allocated memory, with each thread having its own pool. This is useful when you have many network sockets to handle and want to avoid the general purpose allocator. The caveat is that a deallocation must be made by the same thread that made the allocation, thus limiting access to the buffer to a single thread (with some exceptions).
  • hexi::endian
    • Provides functionality for handling endianness of integral types.

Before we wrap up, look at these tidbits...

We’re at the end of the overview, but there’s more to discover if you decide to give Hexi a shot. Here’s a selection of tasty morsels:

  • binary_stream allows you to perform write seeking within the stream, when the underlying buffer supports it. This is nice if, for example, you need to update a message header with information that you might not know until the rest of the message has been written; checksums, sizes, etc.
  • binary_stream provides overloaded put and get member functions, which allow for fine-grained control, such as reading/writing a specific number of bytes.
  • binary_stream allows for writing to std::string_view and std::span with view() and span() as long as the underlying container is contiguous. This allows you to create views into the buffer’s data, providing a fast, zero-copy way to read strings and arrays from the stream. If you do this, you should avoid writing to the same buffer while holding views to the data.
  • buffer_adaptor provides a template option, space_optimise. This is enabled by default and allows it to avoid resizing containers in cases where all data has been read by the stream. Disabling it allows for preserving data even after having been read. This option is only relevant in scenarios where a single buffer is being both written to and read from.
  • buffer_adaptor provides find_first_of, making it easy to find a specific sentinel value within your buffer.

To learn more, check out the examples in docs/examples!

Thanks for listening! Now go unload the dis[C Make Lists](include/CMakeLists.txt)hwasher.

Source Link


Keep your files stored safely and securely with the SanDisk 2TB Extreme Portable SSD. With over 69,505 ratings and an impressive 4.6 out of 5 stars, this product has been purchased over 8K+ times in the past month. At only $129.99, this Amazon’s Choice product is a must-have for secure file storage.

Help keep private content private with the included password protection featuring 256-bit AES hardware encryption. Order now for just $129.99 on Amazon!


Start your free Amazon Prime trial
today and unlock unlimited streaming and more!

Help Power Techcratic’s Future – Scan To Support

If Techcratic’s content and insights have helped you, consider giving back by supporting the platform with crypto. Every contribution makes a difference, whether it’s for high-quality content, server maintenance, or future updates. Techcratic is constantly evolving, and your support helps drive that progress.

As a solo operator who wears all the hats, creating content, managing the tech, and running the site, your support allows me to stay focused on delivering valuable resources. Your support keeps everything running smoothly and enables me to continue creating the content you love. I’m deeply grateful for your support, it truly means the world to me! Thank you!

BITCOIN

Bitcoin Logo

Bitcoin QR Code

bc1qlszw7elx2qahjwvaryh0tkgg8y68enw30gpvge

Scan the QR code with your crypto wallet app

DOGECOIN

Dogecoin Logo

Dogecoin QR Code

D64GwvvYQxFXYyan3oQCrmWfidf6T3JpBA

Scan the QR code with your crypto wallet app

ETHEREUM

Ethereum Logo

Ethereum QR Code

0xe9BC980DF3d985730dA827996B43E4A62CCBAA7a

Scan the QR code with your crypto wallet app

Please read the Privacy and Security Disclaimer on how Techcratic handles your support.

Disclaimer: As an Amazon Associate, Techcratic may earn from qualifying purchases.

Tags: Hacker News
Share162Share28ShareShare4ShareTweet101
Previous Post

No cash? No Problem! DoorDash-Klarna partnership lets you pay for takeout in installments

Next Post

What’s The Difference Between These Crossovers?

Hacker News

Hacker News

Stay updated with Hacker News, where technology meets entrepreneurial spirit. Get the latest on tech trends, startup news, and discussions from the tech community. Read the latest updates here at Techcratic.

Related Posts

Welcome to the Two Towers Mud!
Hacker News

Welcome to the Two Towers Mud!

July 8, 2025
1.3k
BladedFeline Exploits Whisper and PrimeCache to Breach IIS and Microsoft Exchange Servers
Hacker News

BladedFeline Exploits Whisper and PrimeCache to Breach IIS and Microsoft Exchange Servers

July 7, 2025
1.3k
Introducing Tyr, a new Rust DRM driver
Hacker News

Introducing Tyr, a new Rust DRM driver

July 7, 2025
1.3k
New Slopsquatting Attack Exploits Coding Agent Workflows to Deliver Malware
Hacker News

New Slopsquatting Attack Exploits Coding Agent Workflows to Deliver Malware

July 7, 2025
1.3k
AiLock Ransomware Emerges with Hybrid Encryption Tactics: ChaCha20 Meets NTRUEncrypt
Hacker News

AiLock Ransomware Emerges with Hybrid Encryption Tactics: ChaCha20 Meets NTRUEncrypt

July 7, 2025
1.3k
joelburget/microjax: A tiny autograd engine with a Jax-like API
Hacker News

joelburget/microjax: A tiny autograd engine with a Jax-like API

July 7, 2025
1.3k
New Linux EDR Evasion Tool Exploits io_uring Kernel Feature
Hacker News

New Linux EDR Evasion Tool Exploits io_uring Kernel Feature

July 7, 2025
1.3k
The Era of Full-Stack Chip Designers
Hacker News

The Era of Full-Stack Chip Designers

July 7, 2025
1.3k
Load More
Next Post
What’s The Difference Between These Crossovers?

What's The Difference Between These Crossovers?

Your Tech Resources

  • 30 Second Tech ™
  • AI
  • App Zone ™
  • Apple
  • Ars Technica
  • CNET
  • ComputerWorld
  • Crypto News
  • Cybersecurity
  • Endgadget
  • Forbes
  • Fossbytes
  • Gaming
  • GeekWire
  • Gizmodo
  • Google News
  • Hacker News
  • Harvard Tech
  • I Like Cats ™
  • I Like Dogs ™
  • LifeHacker
  • MacRumors
  • Macworld
  • Mashable
  • Microsoft
  • MIT Tech
  • PC World
  • Photofocus
  • Physics
  • Random Tech
  • Retro Rewind ™
  • Robot Report
  • SiliconANGLE
  • SlashGear
  • Smartphone
  • StackSocial
  • Tech Art
  • Tech Careers
  • Tech Deals
  • Techcratic ™
  • TechCrunch
  • Techdirt
  • TechRepublic
  • Techs Got To Eat ™
  • TechSpot
  • Tesla
  • The Verge
  • TNW
  • Trusted Reviews
  • UFO
  • VentureBeat
  • Visual Capitalist
  • Wired
  • ZDNet

Tech News

  • 30 Second Tech ™
  • AI
  • Apple Insider
  • Ars Technica
  • CNET
  • ComputerWorld
  • Crypto News
  • Cybersecurity
  • Endgadget
  • ExtremeTech
  • Fossbytes
  • Gaming
  • GeekWire
  • Gizmodo

Tech News

  • Harvard Tech
  • MacRumors
  • Macworld
  • Mashable
  • Microsoft
  • MIT Tech
  • Physics
  • PC World
  • Random Tech
  • Retro Rewind ™
  • SiliconANGLE
  • SlashGear
  • Smartphone
  • StackSocial
  • Tech Careers

Tech News​

  • Tech Art
  • TechCrunch
  • Techdirt
  • TechRepublic
  • Techs Got To Eat ™
  • TechSpot
  • Tesla
  • The Verge
  • TNW
  • Trusted Reviews
  • UFO
  • VentureBeat
  • Visual Capitalist
  • Wired
  • ZDNet

Site Links

  • About Techcratic
  • Affiliate Disclaimer
  • Affiliate Link Policy
  • Contact Techcratic
  • Dealors Discount Store
  • Privacy and Security Disclaimer
  • Privacy Policy
  • RSS Feed
  • Site Map
  • Support Techcratic
  • Techcratic
  • Tech Deals
  • TOS
  • 𝕏
Click For A Secret Deal

OnePlus introduces Buds 4 and Watch 3 43mm

Welcoming Furry Joy!! Unleash Excitement as Adorable Puppies Find Home Sweet Home

iPhone 17 Air rumor: New sky blue color

Police Checkpoint |As Dusk Falls Ep.25

Buying a new Mac? Here’s why you should switch from a MacBook to a desktop

The best deals from Prime Day 2025

Techcratic – Your All In One Tech Hub © 2020 – 2025
All Rights Reserved
∞

No Result
View All Result
  • 30 Second Tech ™
  • AI
  • App Zone ™
  • Apple
  • Ars Technica
  • CNET
  • Crypto News
  • Cybersecurity
  • Endgadget
  • Gaming
  • I Like Cats ™
  • I Like Dogs ™
  • MacRumors
  • Macworld
  • Tech Deals
  • Techcratic ™
  • Techs Got To Eat ™
  • Tesla
  • UFO
  • Wired