2017-10-13 36 views
0

到int是有办法在C的ASCII /扩展ASCII字符的十进制值(INT)(尤其是扩展的)如何转换ASCII和扩展ASCII在C

ASCII &扩展ASCII表:我的问题的一些代码的http://www.theasciicode.com.ar/

实施例:

int a = (int) 'a'; 
int b = (int) '│'; 

printf("%i\n", a); 
printf("%i\n", b); 

并且输出是:

97 
14849154 

在ASCII表中,“│”通常是179

+3

FYI,'(INT)“a''是reduntant。 ''a''已经是一个整数。 –

+0

[Extended ASCII](https://en.wikipedia.org/wiki/Extended_ASCII#Character_set_confusion)不是_one_字符集,因此它不是一个非常有用的术语。 –

回答

3

OP”平台使用有关字符串文字的基本编码集之外实现定义的行为。

UTF-8编码。所述'│'是Unicode字符U+2502

当作为UTF-8编码的,它具有3个字节的序列0xE2 0x94之间为0x82或在大端顺序:作为由OP打印出来0xE29482其是14849154(十进制)。

int b = (int) '│'; 

注:ASCII仅对于代码0定义为127

+0

是的,但你仍然不知道源字符集究竟是什么,编译器被告知它是什么(以及编译器被告知用作执行字符集)。有可能它们都是有意使用UTF-8的。实际的源字符集也可能是UTF-8,但编译器被告知不同。总体而言,UTF-8似乎是这个项目中的一个错误。 –

+0

@tom关于“实际的源字符集是UTF-8”,[编码和字符集有什么区别?](https://stackoverflow.com/q/2281646/2410359)可能会有用。我会说[UTF-8](https://en.wikipedia.org/wiki/UTF-8)是一种编码,而不是[charset](https://en.wikipedia.org/wiki/Character_encoding)。 – chux

+0

同意但charset是用于编码的各种编译参数中使用的术语。 –