Bartłomiej Sługocki
Bartłomiej Sługocki

Reputation: 173

Why the first byte of .png file is 0x89?

I am currently reading about PNG file format. It turns out that the first byte of the file is specified to be equal to 0x89.

I am wondering what are the reasons of the value of that byte.

What I've already learned about the format is that the first byte is used to detect the transmition over 7-bit channel. If the value was 0x80 (1000 0000), it would make sense (if after transmition we have 0 on the first byte then 7-bit mode was used and the file is corrupted). But what is the sense of ones on zero and third positions of 0x89 (1000 1001)?

Upvotes: 2

Views: 2227

Answers (1)

bro
bro

Reputation: 771

Extract from http://www.libpng.org/pub/png/spec/1.2/PNG-Rationale.html#R.PNG-file-signature

The first two bytes distinguish PNG files on systems that expect the first two bytes to identify the file type uniquely. The first byte is chosen as a non-ASCII value to reduce the probability that a text file may be misrecognized as a PNG file; also, it catches bad file transfers that clear bit 7

So the LSB of the first byte is used for file type identification.

Upvotes: 5

Related Questions