使用显式类型转换将十六进制整数转换为字符?

Posted

技术标签:

【中文标题】使用显式类型转换将十六进制整数转换为字符?【英文标题】:Converting a hexadecimal Integer into a character using explicit type conversion? 【发布时间】:2012-09-27 20:39:07 【问题描述】:

我编写了以下代码,但是 o/p 不是预期的?有人指导我吗?

问题:编写一个示例程序来声明一个十六进制整数并使用显式类型转换将其转换为字符?

class hexa

public static void main(String ar[])

    int hex=0xA;
    System.out.println(((char)hex));


请告诉我: 为什么输出有差异

/*code 1*/
int hex = (char)0xA; 
System.out.println(hex); 
/*code 2*/
int hex = 0xA; 
System.out.println((char)hex);

【问题讨论】:

输出结果是什么?您的期望是什么? 为什么输出有差异??? /*代码 1*/ int hex = (char)0xA; System.out.println(hex); /*代码 2*/ int hex = 0xA; System.out.println((char)hex); 【参考方案1】:
int hex = 0xA; 
System.out.println( (char)hex );

十六进制值 0xA(或十进制 10)是 ASCII 中的“\n”(换行符)。 因此输出。

编辑(感谢halex 在 cmets 中提供更正:

int hex = (char) 0xA;
System.out.println(hex); //here value of hex is '10', type of hex is 'int', the overloaded println(int x) is invoked.

int hex = 0xA;
System.out.println((char) hex); //this is equivalent to System.out.println( '\n' ); since the int is cast to a char, which produces '\n', the overloaded println(char x) is invoked.

【讨论】:

为什么输出有差异 /*code 1*/ int hex = (char)0xA; System.out.println(hex); /*代码 2*/ int hex = 0xA; System.out.println((char)hex); 关于您的编辑:在您编写的代码的 cmets 中,toStringintchar 上被调用,但这是不正确的。没有自动装箱,但为 intchar 类型调用了适当的 println 重载版本。【参考方案2】:

我假设您希望打印字母 A。 而不是print 使用printf

int hex=0xA;
System.out.printf("%X%n", hex);

【讨论】:

如果是这样,那么 %n 是做什么的 换行符。没有那个 printf 更像是print 而不是println

以上是关于使用显式类型转换将十六进制整数转换为字符?的主要内容,如果未能解决你的问题,请参考以下文章

python各种类型的转换

JS 转换数据类型

数据类型

Oracle中如何用SQL把字符串转换成整型

ASP强制转换成整数!

Delphi 类型转换函数(有几个函数没见过,FloatToStrF,FloatToText等等)