为什么把数字强转为char类型就是按照ascii编码。c,java都是这样。

 我来答
百度网友9ccec88
推荐于2016-01-20 · TA获得超过2018个赞
知道大有可为答主
回答量:2154
采纳率:50%
帮助的人:1597万
展开全部

你说的那是英文,数字等字符的情况,在所有的编码里面,英文,数字的编码值都是一样的(并不是说它就采用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"就看出来了。编码更多的内容请百度百科。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式