为什么把数字强转为char类型就是按照ascii编码。c,java都是这样。
展开全部
你说的那是英文,数字等字符的情况,在所有的编码里面,英文,数字的编码值都是一样的(并不是说它就采用ascii编码了,gbk,utf-8里面的英文,数字也是这个值)
举个最简单的例子,找个中文汉字出来,你有办法把它用ascii编码吗?ascii是8位编码(最高位其实没用),汉字至少要16位双字节编码。而char类型,char是java字符基本类型,是用unicode编码的。你可以看看其编码值,以下用字符串采用不同编码编出来的字节数组。
import java.util.Arrays;
public class Test
{
public static void main(String[] args) throws Exception
{
char a = '一';
System.out.println((int)a);//unicode编码
System.out.println(Arrays.toString("一".getBytes("UTF-8")));
System.out.println(Arrays.toString("一".getBytes("Unicode")));
System.out.println(Arrays.toString("一".getBytes("GBK")));
}
}
追问
java中的char类型是Unicode编码。你的意思是说,任何编码 数字 字母对应的数值是一样的吗?
追答
是英文字母和数字对应的数值一样。UTF-8为不定长编码,1-6字节,GBK是双字节编码,遇到英文等采用ISO-8859-1编码(ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号。)也就是说这两种编码去编英文字母都是一个字节。而Unicode虽然值是一样,但实际它会用两个字节来编,你把我那个示例里的“一”换成"a"就看出来了。编码更多的内容请百度百科。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询