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

Mary-Kate Olsen
Lepaskan: 2024-11-11 02:56:02
asal
689 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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);
Salin selepas log masuk

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 )
Salin selepas log masuk

Dengan makro ini, anda hanya boleh menulis:

cout << "a is " << HEX( a );
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan