Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencetak Aksara Tidak Bertanda sebagai Perenambelasan dalam C Menggunakan ostream?
Mencetak Aksara Tidak Bertanda sebagai Perenambelasan dalam C Menggunakan ostream
Dalam C , mencetak pembolehubah 8-bit yang tidak ditandatangani secara langsung menggunakan ostream menganggapnya sebagai aksara, mengakibatkan perwakilan heksadesimal tidak tepat. Untuk mengatasinya, terdapat beberapa kaedah yang tersedia:
Menghantar ke int
Satu pendekatan biasa ialah menghantar aksara yang tidak ditandatangani kepada integer sebelum mencetak. Ini memaksa ostream untuk menganggap nilai sebagai nombor perenambelasan. Contohnya:
cout << "a is " << hex << (int) a << "; b is " << hex << (int) b << endl;
Menggunakan manipulator hex dengan int
Sebagai alternatif, anda boleh menggunakan manipulator strim hex secara langsung dengan integer. Ini akan menukar integer kepada perwakilan heksadesimal dan menambahkannya pada strim. Contohnya:
cout << "a is " << hex << int(a) << "; b is " << hex << int(b) << endl;
Menggunakan manipulator hex dengan setw dan setfill
Jika anda memerlukan sifar pendahuluan untuk padding, anda boleh menggabungkan manipulator hex dengan setw dan setfill ke nyatakan lebar yang dikehendaki dan aksara isi. Contohnya:
#include <iomanip> ... cout << "a is " << setw(2) << setfill('0') << hex << int(a);
Mencipta makro
Anda boleh memudahkan proses pencetakan dengan mencipta makro yang menggabungkan манипуляции yang diperlukan. Contohnya:
#define HEX( x ) setw(2) << setfill('0') << hex << (int)( x )
Dengan makro ini, anda hanya boleh menulis:
cout << "a is " << HEX( a );
Penyelesaian MartinStettner
Satu lagi penyelesaian yang elegan ialah mencipta sisipan strim tersuai untuk aksara yang tidak ditandatangani yang mencetaknya secara automatik sebagai heks. Sila rujuk soalan dan jawapan asal untuk mendapatkan butiran lanjut tentang pendekatan MartinStettner.
Atas ialah kandungan terperinci Bagaimana untuk Mencetak Aksara Tidak Bertanda sebagai Perenambelasan dalam C Menggunakan ostream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!