有没有一个函数可以返回字符的ASCII值?(C++)

18

我需要一个函数,能返回包括空格、制表符、换行符等字符在内的ASCII值。

同样地,请问哪个函数可以在十六进制、十进制和二进制之间进行转换?

5个回答

35
char c;
int ascii = (int) c;
s2.data[j]=(char)count;

一个 char 就是 一个整数,不需要进行转换操作。

也许你正在寻找将整数以十六进制、二进制或者十进制的形式显示出来的函数?


12

您不需要使用函数来获取ASCII值,只需通过(隐式)转换将其转换为整数即可:

int x = 'A';  // x = 65
int y = '\t'; // x = 9

要将一个数字转换为十六进制或十进制,您可以使用printf家族的任何成员:

char buffer[32];  // make sure this is big enough!
sprintf(buffer, "%d", 12345);  // decimal: buffer is assigned "12345"
sprintf(buffer, "%x", 12345);  // hex: buffer is assigned "3039"

没有内置的函数可以将其转换为二进制;您需要自己编写代码。


6

如果您想在代码中获取字符的ASCII值,请将该字符放入引号中。

char c = 'a';

2

您可能将内部表示与输出混淆了。要查看字符的值:

char c = 'A';
cout << c << " has code " << int(c) << endl;

同样地,对于十六进制值 - 所有数字都是十六进制数字,因此只需要输出即可。
int n = 42;
cout << n << " in hex is " << hex << n << endl;

“hex”在输出语句中是C++的操纵符。有用于16进制和10进制(dec)的操纵符,但不幸的是没有用于二进制的操纵符。

0

就十六进制和二进制而言,它们只是整数的表示形式。你可能想要的是类似printf("%d",n)和printf("%x",n)这样的东西——第一个打印十进制,第二个打印相同数字的十六进制版本。请澄清你想要做什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接