int a1 = 65535;
char ch2 = (char) a1;
System.out.println("ASCII value corresponding to 65535 after being typecasted : "+ch2);// prints?
char ch3 = 65535;
System.out.println("ASCII value corresponding to 65535 : "+ch3);// again prints?
我引用了Herbert Schildt的第3章:数据类型,变量和数组:
字符的范围是0到65535。没有负字符。标准字符集ASCII(通常称为ASCII)的范围始终为0到127,而扩展的8位字符集ISO-
Latin-1的范围为0到255。由于Java旨在允许程序在全球范围内编写使用时,将使用Unicode表示字符是有意义的。只要整数在范围内,也可以将整数分配给char。//char ch33 = 65536; compilation-error, ofcourse since out of char range
(which is 0 - 65535)
int a11 = 65536; char ch22 = (char) a11; System.out.println("ASCII value corresponding to 65536 after being
typecasted : “+ch22);
// non-printing character(appearance of a small square like figure in
eclipse console)
问题是:为什么这行 没有 编译错误:char ch22 = (char) a11
即使char ch33 = 65536
行不通?还有一件事,当int a1 = 65535
服用时不是这种情况吗?
好的,您在那里有几个非常不同的问题。
我认为第一个问题是:
ch2
和ch3
因为您输出的是无效字符。Java字符代表UTF-16代码点,而不是实际字符。UTF-16中的某些Unicode字符需要
两个 Java char
来存储。有关Unicode FAQ的
UTF-16的更多信息,请参见。在UTF-16,这个值0xFFFF
(这是你的东西ch2
,并ch3
包含)不是作为一个独立的值有效;
即使存在,也没有Unicode U +
FFFF字符。
输入以下内容ch22
:您看到一个小方框的原因是您正在输出字符0
(结果(char)65536
为0
,请参见下文),这是一个“控制字符”(所有低于32的字符-
正常空格字符-是各种控制字符)。字符0
是“空”字符,我不知道它没有公认的标志符号。
int a11 = 65536; char ch22 = (char) a11;
?因为这就是Java
缩小的原始转换的定义方式。没有抛出任何错误;而是仅使用相关的位:
将有符号整数缩小为整数类型T会简单地丢弃除n个最低阶位以外的所有位,其中n是用于表示类型T的位的数量。除了可能丢失有关数值幅度的信息外,
,这可能导致结果值的符号与输入值的符号不同。
我想将char类型转换为int类型,而不丢失有符号的含义,所以我在文件int_test中编写代码。c和它的工作原理: 运行结果是: (有符号字符)a=-2,b=-2 编译日志是: gcc-o int _ test int _ test . c int _ test . c:在函数“main”中:int_test.c:9:15:警告:左移位计数 我的问题是:1.是否有简单有效的转换?2.简单地将ch
问题内容: 我只想知道是否存在更好的解决方案,可以从字符串中的字符解析数字(假设我们知道索引n处的字符是数字)。 (不用说这只是一个例子) 问题答案: 尝试。 产生: 令人高兴的是,它还可以与字符串一起使用,例如and ,并且 和分别是东部阿拉伯文和北印度文/梵文的数字5。
基于此阵列: 我想在Java中打印双精度值和ascii值。我在互联网上找不到合适的解决方案。我刚刚发现如何将单个字符转换为整数值。但是很多字符呢?主要问题是,我有一个大char[]和一些双精度和int值存储在.对于双精度值,它们存储在4字节大小和整数1或2字节内,所以我必须阅读所有这些并转换为双精度或整数。 谢谢你帮忙
我是斯威夫特的新人,现在尽我所能地学习这个。我写了得到参数的函数:数字和函数,它们与这个数字一起工作: 但是编译给出错误。当我试图改变论点时,比如
我一直在尝试编译,并玩了一圈的和数,但仍然不能弄清楚错误是什么。有什么想法吗? 标题:
你好,我正在尝试创建一个程序路径并放入注册表文件中,但我一直出错。这是代码: 我得到的错误说 从“char*”到“unsigned char”[-fppermissive]的转换无效 我花了几个小时寻找解决方案,但我找不到。