C 如何将数组中的 ASCII 数字转换为文本
C How to convert ASCII numbers in an array to text
如何将这个包含 ASCII 数字的数组转换为文本,以便每个数字都变成一个字母。所以“72”得到H,101得到E等等。
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
可以遍历数组,使用%c
格式化参数打印int值的ascii字符
for (int i = 0 ; i < 11; i ++){
printf("%c", a[i]);
}
- C字符类型 C使用char类型来存储字符和字母。但是char类型是整数类型,因为C下面存储的是整数而不是字符。
int main(int argc, char *argv[], char **env) {
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
for (int i = 0; i < sizeof a / sizeof(int); ++i) {
printf("%c", (char) a[i]);
}
}
C 中的一切都是数字。编译器无法分辨整数常量 72
和 'H'
之间的区别,两者都产生一个数字,甚至它们都具有 int
类型。字符和数字格式仅在您向人类用户显示原始数据时适用。
所以没有将 72
转换为 'H'
,它已经是正确的格式,即原始数字 72。我们只需要告诉计算机我们希望将这个原始数字打印为一个人物。最简单的方法是 printf("%c", ...
,但它需要一个 char
类型的参数。所以我们必须将 a[0]
从 int
类型转换为 char
,我们可以通过转换来完成。 printf("%c", (char)a[0]);
.
如果数组是 char a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
那么就不需要转换了。
您可以使用结构数组,因为数组可能包含不同的数据类型。
试试这个:
#include <stdio.h>
struct data
{
int j;
char c;
};
int main()
{
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
int size = sizeof(a)/sizeof(a[0]);
struct data value[size];
for(int i=0;i<size;i++)
{
if(a[i]>=48 && a[i]<=57)
{
char ch= a[i];
value[i].j =ch;
}
else
{
char ch= a[i];
value[i].c =ch;
}
}
for(int i=0;i<size;i++){
if(a[i]>=48 && a[i]<=57)
printf("%d",value[i].j);
printf("%c",value[i].c);
}
return 0;
}
输出将是:Hello World
(希望对您有所帮助。)
如何将这个包含 ASCII 数字的数组转换为文本,以便每个数字都变成一个字母。所以“72”得到H,101得到E等等。
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
可以遍历数组,使用%c
格式化参数打印int值的ascii字符
for (int i = 0 ; i < 11; i ++){
printf("%c", a[i]);
}
- C字符类型 C使用char类型来存储字符和字母。但是char类型是整数类型,因为C下面存储的是整数而不是字符。
int main(int argc, char *argv[], char **env) {
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
for (int i = 0; i < sizeof a / sizeof(int); ++i) {
printf("%c", (char) a[i]);
}
}
C 中的一切都是数字。编译器无法分辨整数常量 72
和 'H'
之间的区别,两者都产生一个数字,甚至它们都具有 int
类型。字符和数字格式仅在您向人类用户显示原始数据时适用。
所以没有将 72
转换为 'H'
,它已经是正确的格式,即原始数字 72。我们只需要告诉计算机我们希望将这个原始数字打印为一个人物。最简单的方法是 printf("%c", ...
,但它需要一个 char
类型的参数。所以我们必须将 a[0]
从 int
类型转换为 char
,我们可以通过转换来完成。 printf("%c", (char)a[0]);
.
如果数组是 char a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
那么就不需要转换了。
您可以使用结构数组,因为数组可能包含不同的数据类型。 试试这个:
#include <stdio.h>
struct data
{
int j;
char c;
};
int main()
{
int a[] = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100};
int size = sizeof(a)/sizeof(a[0]);
struct data value[size];
for(int i=0;i<size;i++)
{
if(a[i]>=48 && a[i]<=57)
{
char ch= a[i];
value[i].j =ch;
}
else
{
char ch= a[i];
value[i].c =ch;
}
}
for(int i=0;i<size;i++){
if(a[i]>=48 && a[i]<=57)
printf("%d",value[i].j);
printf("%c",value[i].c);
}
return 0;
}
输出将是:Hello World (希望对您有所帮助。)