Đây là một vấn đề kỳ lạ đã khiến tôi băn khoăn một chút.In ra các giá trị hex của một mảng char * trong C cho các giá trị lẻ cho đầu vào nhị phân
Chương trình được viết bằng C89 và nó đọc một tệp thành một mảng char * 16 byte tại một thời điểm (sử dụng fread và kích thước sizeof (char)). Tập tin là fopen'd với cờ "rb". Mảng này sau đó được chuyển vào một hàm về cơ bản lấy 16 giá trị hex và đưa nó vào một chuỗi, mỗi giá trị được phân cách bởi một khoảng trắng.
Đây là nơi mà sự kỳ quặc xuất hiện. Hàm này tạo ra một kết xuất hex đẹp, 16 byte tại một thời điểm, cho đầu vào tệp văn bản mà tôi có. Nhưng nó vít lên nếu tôi thử nó trên một hình ảnh bitmap nhỏ - tôi kết thúc với đầu ra trong chuỗi như ffffff88 thay vì chỉ 88.
Giá trị hex được đặt vào chuỗi đầu ra bằng cách sử dụng sprintf ("% 02x" , nhập [i]); trong một vòng lặp.
Tại sao tính năng này hoạt động bình thường đối với một số tệp nhưng không hoạt động với một số tệp khác?