this post was submitted on 06 Sep 2025
465 points (97.2% liked)

Programmer Humor

26188 readers
491 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 

Did you ever saw a char and thought: "Damn, 1 byte for a single char is pretty darn inefficient"? No? Well I did. So what I decided to do instead is to pack 5 chars, convert each char to a 2 digit integer and then concat those 5 2 digit ints together into one big unsigned int and boom, I saved 5 chars using only 4 instead of 5 bytes. The reason this works is, because one unsigned int is a ten digit long number and so I can save one char using 2 digits. In theory you could save 32 different chars using this technique (the first two digits of an unsigned int are 42 and if you dont want to account for a possible 0 in the beginning you end up with 32 chars). If you would decide to use all 10 digits you could save exactly 3 chars. Why should anyone do that? Idk. Is it way to much work to be useful? Yes. Was it funny? Yes.

Anyone whos interested in the code: Heres how I did it in C: https://pastebin.com/hDeHijX6

Yes I know, the code is probably bad, but I do not care. It was just a funny useless idea I had.

you are viewing a single comment's thread
view the rest of the comments
[–] bacon_pdp@lemmy.world 93 points 1 day ago (3 children)
[–] deltapi@lemmy.world 1 points 18 hours ago

The AD&D "Gold Box" games from SSI Inc. stored game text in 6-bit encoding. The first one of these I played was "Champions of Krynn" and the PC release came on 4 360k 5.25 dsdd floppy disks. They actually needed the packing in those days, and couldn't afford to spent cpu cycles or ram on built in compression.
I remember opening up the game data files in a file viewer (maybe pc-tools?) and being confounded by the lack of text in the files.

[–] cows_are_underrated@feddit.org 33 points 1 day ago (2 children)

Did not knew that this existed, but yeah its kinda like that. Except that I only allow 5 characters.

[–] bacon_pdp@lemmy.world 20 points 1 day ago (1 children)

Given you are only a-z with space and dot; you could do 5bit and pack 6 characters per 32bit word with space to spare

[–] solidgrue@lemmy.world 8 points 1 day ago (2 children)
[–] sukhmel@programming.dev 2 points 1 day ago* (last edited 1 day ago)

Funny how they have a typo in test vectors:

0x0000 -> babab

0xFFFF -> zvzuz

0x1234 -> damuh

0xF00D -> zabat

0xBEEF -> ruroz

[–] BatmanAoD@programming.dev 2 points 1 day ago (1 children)

This is hilarious. I'm not sure how often anyone would actually need to verbalize arbitrary binary data, but I do see an advantage over base64 since the English letter names are so often phonetically similar.

[–] solidgrue@lemmy.world 1 points 13 hours ago

The FAA/ICAO use a similar system to name aerial navigation and fixed GPS waypoints. It addresses the challenge of communicating identifiers of unique nodes in a vast network using VHF communications.

[–] AllNewTypeFace@leminal.space 7 points 1 day ago

I did something like this once, in the course of a project whose purpose I don’t remember. Realising that 8-bit ASCII was wasted on the constrained alphabet of some kind of identifiers, I packed them into 6 bits, 1⅓ to a byte. I recall naming the code to do this “ShortASC”, pronounced “short-ass”