Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencetak Aksara Tidak Bertanda sebagai Perenambelasan dalam C Menggunakan ostream?

Bagaimana untuk Mencetak Aksara Tidak Bertanda sebagai Perenambelasan dalam C Menggunakan ostream?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 02:56:02691semak imbas

How to Print Unsigned Chars as Hexadecimal in C   Using 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn