Como Converter Int para ASCII Char em C++
- Use Int to Char Assignment para Converter Int to ASCII Char
-
Utilize
sprintf()
Função para Converter Int em ASCII Char
Este artigo explicará vários métodos de como converter int para ASCII char C++.
Use Int to Char Assignment para Converter Int to ASCII Char
A codificação de caracteres ASCII é especificada em um formato de 7 bits. Assim, existem 128 caracteres únicos, cada mapeamento para o valor numérico correspondente de 0 a 127.
Uma vez que a linguagem de programação C implementou os tipos char
como números abaixo do capô, podemos atribuir uma variável int
a uma variável do tipo char
e tratá-la como o caractere ASCII correspondente. Por exemplo, empurramos diretamente valores do vetor int
para o vetor char
e então os emitimos utilizando o método std::copy
, exibindo caracteres ASCII como esperado.
Observe que atribuir ao tipo char
somente funciona quando o valor int
corresponde a um código ASCII, ou seja, está na faixa de 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 emitir diretamente os valores int
como caracteres ASCII utilizando a função printf
. O printf
toma o especificador de formato para o argumento de tipo correspondente, como mostrado na tabela a seguir.
Especificador | Descrição |
---|---|
% |
Imprime um caracter literal % (este tipo não aceita nenhuma bandeira, largura, precisão, campos de comprimento). |
d, i |
int como um número inteiro assinado. O %d e o %i são sinônimos de saída, mas são diferentes quando utilizados com o scanf para entrada (onde utilizar %i interpretará um número como hexadecimal se for precedido por 0x, e octal se for precedido por 0). |
u |
Imprimir int. decimal sem assinatura. |
f, F |
duplo em notação normal (ponto fixo). As notações f e F diferem apenas em como as strings para um número infinito ou NaN são impressas (inf, infinity e nan para f ; INF, INFINITY e NAN para F ). |
e, E |
valor duplo na forma padrão (d.ddde±dd ). Uma conversão E utiliza a letra E (em vez de e ) para introduzir o expoente. |
g, G |
dobrar em notação normal ou exponencial, o que for mais apropriado para sua magnitude. O g utiliza letras minúsculas, o G utiliza letras maiúsculas. |
x, X |
int não assinado como um número hexadecimal. O x utiliza letras minúsculas, e o X utiliza letras maiúsculas. |
o |
int não assinado em octal. |
s |
string com termo nulo. |
c |
char (caractere). |
p |
void* (ponteiro para anular) em um formato definido pela implementação. |
a, A |
dupla em notação hexadecimal, começando com 0x ou 0X. a utiliza letras minúsculas, A utiliza letras maiúsculas. |
n |
Imprime nada, mas escreve o número de caracteres escritos com sucesso até agora em um parâmetro de ponteiro inteiro. |
#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;
Utilize sprintf()
Função para Converter Int em ASCII Char
A função sprintf
é outro método para converter valores int
em caracteres. Devemos declarar uma variável char
para manter o valor convertido. Esta variável é passada como o primeiro argumento para sprintf
e o terceiro parâmetro especifica o número a ser processado. Finalmente, você deve fornecer um dos especificadores de formato como com printf
, ele indica o tipo para o qual o valor será convertido.
#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