Có thể hữu ích để giải thích cách các tệp hoạt động ở mức thấp nhất:
Một tệp là một luồng byte, có độ dài bằng 0 hoặc nhiều hơn. Một byte là 8 bit. Vì có 256 kết hợp 8 bit, điều đó có nghĩa là một byte là bất kỳ số nào từ 0 đến 255. Vì vậy, mỗi tệp ở mức thấp nhất của nó là một khối lớn các số từ 0 đến 255.
Nó hoàn toàn phụ thuộc vào các chương trình và người dùng để quyết định những con số "có nghĩa là gì". Nếu chúng ta muốn lưu trữ văn bản, thì có lẽ nên sử dụng các số làm mã, trong đó mỗi số được gán một chữ cái. Đó là những gì ASCII và Unicode làm. Nếu chúng ta muốn hiển thị văn bản, thì có lẽ nên xây dựng một thiết bị hoặc viết chương trình có thể lấy các số này và hiển thị một bitmap trông giống như mã ASCII / Unicode tương ứng. Đó là những gì thiết bị đầu cuối và trình giả lập thiết bị đầu cuối làm.
Tất nhiên, đối với đồ họa, có lẽ chúng ta muốn các con số đại diện cho pixel và màu sắc của chúng. Sau đó, chúng ta sẽ cần một chương trình đi qua tệp, đọc tất cả các byte và hiển thị hình ảnh tương ứng. Trình giả lập thiết bị đầu cuối đang mong đợi các byte là số ASCII / Unicode và sẽ hoạt động khác nhau, cho cùng một đoạn byte (hoặc tệp).