c++ - salida - que es cin
¿Cómo dar salida a un personaje como un entero a través de cout? (4)
#include <iostream>
using namespace std;
int main()
{
char c1 = 0xab;
signed char c2 = 0xcd;
unsigned char c3 = 0xef;
cout << hex;
cout << c1 << endl;
cout << c2 << endl;
cout << c3 << endl;
}
Esperaba que la salida fuera la siguiente:
ab
cd
ef
Sin embargo, no tengo nada.
Supongo que esto se debe a que cout siempre trata a ''char'', ''signed char'' y ''unsigned char'' como caracteres en lugar de enteros de 8 bits. Sin embargo, ''char'', ''signed char'' y ''unsigned char'' son todos tipos integrales.
Entonces mi pregunta es: ¿cómo dar salida a un personaje como un número entero a través de cout?
PD: static_cast (...) es feo y necesita más trabajo para recortar bits adicionales.
Cámbialos a un tipo entero, (¡y máscara de bits apropiadamente!), Es decir:
#include <iostream>
using namespace std;
int main()
{
char c1 = 0xab;
signed char c2 = 0xcd;
unsigned char c3 = 0xef;
cout << hex;
cout << (static_cast<int>(c1) & 0xFF) << endl;
cout << (static_cast<int>(c2) & 0xFF) << endl;
cout << (static_cast<unsigned int>(c3) & 0xFF) << endl;
}
Otra forma de hacerlo es con std :: hex aparte de casting (int) :
std::cout << std::hex << (int)myVar << std::endl;
Espero que ayude.
Tal vez esto:
char c = 0xab;
std::cout << (int)c;
Espero eso ayude.
char a = 0xab;
cout << +a; // promotes a to a type printable as a number, regardless of type.
Esto funciona siempre que el tipo proporcione un operador unario con semántica ordinaria. Si está definiendo una clase que representa un número, para proporcionar un operador unario + con semántica canónica, cree un operator+()
que simplemente devuelva *this
bien por valor o por referencia-a-const.
fuente: Parashift.com - ¿Cómo puedo imprimir un char como un número? ¿Cómo puedo imprimir un carácter * para que el resultado muestre el valor numérico del puntero?