miriam_e: from my drawing MoonGirl (Default)
[personal profile] miriam_e
Well, that was different!

A couple of days ago, I almost completely wasted a couple of hours asking ChatGPT's help in understanding the format of the mouse cursor image files in Linux.

Today I started from scratch, writing a program myself to play with the files. I decided the easiest way to was read a cursor file into an array as a series of 32-bit values because it uses 32-bit numbers in the headers and the images are 4 byte pixels of RGBA values. Using something like 'hexdump' is easiest, and then fiddle with its ASCII in order to output it as, for example, a netpbm file. But I couldn't help thinking there might be a better way.

I asked Gemini this time, and it was very helpful. It agreed that 'hexdump' was a good way to do it, and gave me a command format that I didn't know 'hexdump' was capable of:
hexdump -v -e '4/1 "%02x " "\n"'
This gave me 4 space-separated hex bytes per line.

Gemini suggested converting those to a single 32-bit number by setting up a loop to read each byte and reverse the order, but I realised I could simply use 'awk' to read each line and convert it directly from little-endian to just a 32-bit hex number. For example if I want to read the 5th line:
awk 'NR==5 {print $4 $3 $2 $1; exit}'

Ta-da! :D

A little hesitantly, I asked Gemini what would be involved in writing a program in 'C' to list a file as 32-bit hex numbers (fixing the endianness). It explained the steps then wrote a surprisingly simple program, which compiled and ran perfectly.

However I think I'll stick to hexdump and awk and other already existing tools, because they let me fiddle with the process more. But this was an eyeopener. I really must improve my C skills. I'm a really crappy C programmer. There are so many things I want to do. I need a few more centuries.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

miriam_e: from my drawing MoonGirl (Default)
miriam_e

June 2025

S M T W T F S
1234567
891011121314
15161718192021
222324 25262728
2930     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 8th, 2025 09:03 pm
Powered by Dreamwidth Studios