Cómo convertir la Int a caracteres ASCII en C++
- Usar la asignación de Int a Char para convertir Int a ASCII Char
-
Usa la función
sprintf()
para convertir la Int a caracteres ASCII
Este artículo explicará varios métodos de cómo convertir int a ASCII char C++.
Usar la asignación de Int a Char para convertir Int a ASCII Char
La codificación de caracteres ASCII se especifica en un formato de 7 bits. Así, hay 128 caracteres únicos, cada uno de los cuales se asigna al valor numérico correspondiente de 0 a 127.
Dado que el lenguaje de programación C implementó los tipos char
como números bajo el capó, podemos asignar una variable int
a una variable de tipo char
y tratarla como el correspondiente carácter ASCII. Por ejemplo, empujamos directamente los valores del vector int
al vector char
y luego los emitimos usando el método std::copy
, mostrando los caracteres ASCII como se espera.
Note que asignar al tipo char
sólo funciona cuando el valor int
corresponde a un código ASCII, es decir, está en el rango 0-127.
#include <array>
#include <iostream>
#include <iterator>
#include <vector>
using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
vector<char> chars{};
std::copy(numbers.begin(), numbers.end(),
std::ostream_iterator<int>(cout, "; "));
chars.reserve(numbers.size());
for (auto &number : numbers) {
chars.push_back(number);
}
cout << endl;
std::copy(chars.begin(), chars.end(),
std::ostream_iterator<char>(cout, "; "));
return EXIT_SUCCESS;
}
Resultado:
97; 98; 99; 100; 101; 102; 103;
a; b; c; d; e; f; g;
Alternativamente, podemos dar salida directamente a los valores int
como caracteres ASCII usando la función printf
. printf
toma el especificador de formato para el correspondiente argumento de tipo como se muestra en la siguiente tabla.
Especificador | Descripción |
---|---|
% |
Imprime un carácter literal % (este tipo no acepta ningún campo de bandera, ancho, precisión, longitud). |
d, i |
int como un entero firmado. %d y %i son sinónimos de salida, pero son diferentes cuando se usan con scanf para entrada (donde usando %i interpretará un número como hexadecimal si está precedido por 0x, y octal si está precedido por 0.) |
u |
Imprimir int decimal sin firmar. |
f, F |
doble en notación normal (punto fijo). f y F sólo difieren en cómo se imprimen las cadenas para un número infinito o NaN (inf, infinito y nan para f ; INF, INFINITY y NAN para F ). |
e, E |
doble valor en forma estándar (d.ddde±dd ). Una conversión E utiliza la letra E (en lugar de e ) para introducir el exponente. |
g, G |
doble en notación normal o exponencial, lo que sea más apropiado para su magnitud. g utiliza letras minúsculas, G utiliza letras mayúsculas. |
x, X |
sin signo int como un número hexadecimal. x usa letras minúsculas, y X usa mayúsculas. |
o |
sin firmar en octal. |
s |
de una cadena con terminación nula. |
c |
char (carácter). |
p |
void* (puntero para anular) en un formato definido por la implementación. |
a, A |
doble en notación hexadecimal, comenzando con 0x o 0X. a utiliza letras minúsculas, A utiliza letras mayúsculas. |
n |
No imprime nada, pero escribe el número de caracteres escritos con éxito hasta ahora en un parámetro de puntero entero. |
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>
using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
vector<char> chars{};
for (const auto &number : numbers) {
printf("%c; ", number);
}
cout << endl;
return EXIT_SUCCESS;
}
Resultado:
a; b; c; d; e; f; g;
Usa la función sprintf()
para convertir la Int a caracteres ASCII
La función sprintf
es otro método para convertir los valores int
a caracteres. Debemos declarar una variable char
para mantener el valor convertido. Esta variable se pasa como primer argumento a sprintf
y el tercer parámetro especifica el número a procesar. Finalmente, debes proporcionar uno de los especificadores de formato como con printf
, que indica el tipo al que se convertirá el valor.
#include <array>
#include <charconv>
#include <iostream>
#include <iterator>
#include <vector>
using std::array;
using std::copy;
using std::cout;
using std::endl;
using std::to_chars;
using std::vector;
int main() {
vector<int> numbers{97, 98, 99, 100, 101, 102, 103};
array<char, 5> char_arr{};
for (auto &number : numbers) {
sprintf(char_arr.data(), "%c", number);
printf("%s; ", char_arr.data());
}
cout << endl;
return EXIT_SUCCESS;
}
a; b; c; d; e; f; g;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook