Tôi đang cố gắng đọc trong một dòng ký tự, sau đó in ra số thập lục phân tương đương của các ký tự.In các ký tự thập lục phân trong C
Ví dụ, nếu tôi có một chuỗi đó là "0xc0 0xc0 abc123"
, nơi 2 ký tự đầu tiên là c0
trong hex và các nhân vật còn lại là abc123
trong ASCII, sau đó tôi sẽ nhận được
c0 c0 61 62 63 31 32 33
Tuy nhiên, printf
sử dụng %x
cung cấp cho tôi
ffffffc0 ffffffc0 61 62 63 31 32 33
Làm cách nào để có được kết quả mong muốn mà không có "ffffff"
? Và tại sao nó chỉ c0 (và 80) có ffffff
, nhưng không phải là các ký tự khác?
Giải pháp của tôi bằng cách sử dụng một diễn viên cho 'unsigned char' là một lệnh nhỏ hơn trong gcc4.6 cho x86-64 ... – lvella
Trình gỡ xuống có muốn nhận xét về câu trả lời không đúng? – Mysticial
Có lẽ tôi có thể giúp.Đây là (kỹ thuật) không xác định hành vi vì specifier 'x' đòi hỏi một loại unsigned, nhưng ch được thúc đẩy để int. Mã đúng sẽ chỉ đơn giản là cast ch để unsigned, hoặc sử dụng một cast để unsigned char và specifier: 'hhx'. – 2501