如何将ASCII字符转换为其ASCII整数值?

12

我想把一个字符转换成它的 ASCII 整数值。

我可以用所有可能的值来填充一个数组,然后与之比较,但这对我来说似乎不太对。我想要类似于

char mychar = "k"
public int ASCItranslate(char c)
return c   

ASCItranslate(k) // >> Should return 107 as that is the ASCII value of 'k'.

重点是 atoi() 在这里不起作用,因为它只适用于可读数字。

它不会处理空格(ASCII 32)。


你尝试过什么吗?比如像 return c; 这样的代码? - Kiril Kirov
2
char mychar = "k":哦,我的天啊,你试过这个吗?"k"是一个以空字符结尾的字符串,而不是一个char。此外,C++语句必须以分号结束。你肯定知道这个吧? - TonyK
6个回答

22

只需要这样做:

int(k)

在这里,你只需将字符直接转换为整数,无需调用函数。


7

Char 是一个数字,不需要进行任何转换,因为 ASCII 只是从数字到字符表示的映射。

如果你愿意,你可以直接将其用作数字,或进行强制类型转换。


4

在C++中,您还可以使用static_cast<int>(k)来显式转换。


1
强制类型转换始终是显式的。使用强制类型转换使得转换变得明确。当然,在几乎所有情况下,编译器都会执行转换,而强制类型转换只是噪音。 - Pete Becker
我指的是“对程序员明确”,而不是对编译器明确。 - Tisys
然而,正是转换被明确地进行了。强制类型转换是您在源代码中编写的内容,以告诉编译器执行转换;强制类型转换始终是显式的。 - Pete Becker
好的,明白了 :) 我已经修正了我的句子。 - Tisys

1
将ASCII字符转换为其ASCII值:
  char c='A';
    cout<<int(c);

将ASCII值转换为对应的ASCII字符:

要将ASCII值转换为其对应的ASCII字符:

int a=67;
  cout<<char(a);

1
做这个:-
char mychar = 'k';
//and then
int k = (int)mychar;

1
不支持使用EBCDIC的机器。如果需要可移植性,则需要更复杂的东西。 - Daniel Fischer
1
EBCDIC不是ASCI,EBCDIC更古老,只在IBM早期系统中使用。我记得连MSX都有ASCI,所以这一定很古老了。我在Arduino上使用它,而Arduino可以理解它。 - user613326
4
为什么会被点赞/接受?这不是有效的代码。 - Lightness Races in Orbit

0
#include <iostream>

char mychar = 'k';
int ASCIItranslate(char ch) {
    return ch;
}

int main() {
    std::cout << ASCIItranslate(mychar);
    return 0;
}

这是您原始代码的修复了各种语法错误后的版本。假设您使用的编译器使用ASCII(现在几乎所有编译器都是如此),它可以正常工作。您为什么认为它是错误的?


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