matlab中 ASCII码转化为字符(中文)

matlab中 ASCII码转化为字符(中文),第1张

这个是因为你对汉字的编码不了解引起的。
对于GB2312的字符(就是我们平时所说的区位),一个汉字对应于两个字节
每个字节都是大于A0(十六进制),
倘若,你的第一个字节大于A0,而你的第二个字节小于A0,那么它应当不是汉字(仅仅对于GB2312),不知道你能否理解我说的。
如果真的发生这种情况(你的第一个字节大于A0,而你的第二个字节小于A0),那么系统找不到一个汉字与它对应,极有可能显示是两个字符(ASCII),第一个是就如你上面的?,第二个字符可能就是正常的ASCII码。
对于现在的GBK编码是要求汉字每个字节都超过80(十六进制,对应于十进制的128),当然有一些码是没有汉字对应的。
现在还有BIG5码、万国码,现在的汉字编码也复杂了。
哎。
了解就行。

任务代码为:

#include<stdioh>

main()
{
char w;

printf("请输入一个字母:");

scanf("%c",&w);

printf("与这个字母对应的ASCII码是:%d\n",w);
}

英文字母是字符型,ASCII码十进制的,因此只需要将字符型转换为十进制,在输出函数的时候强制转换类型。

扩展资料:

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;

ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。

65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。

奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。

参考资料:

ASCII 码-百度百科

首先,你的wrd是以字符来定义的,当然只有一个字符~
楼主先要多个字符,必须要用字符数据来定义wrd,在
for (int i = 0; i <= empty - 2; i++)
{
int ASC = (int)(arr[i]);
r += ConvertToString(ASC+3);
int num = ConvertToInt16(r);
wrd = ConvertToChar(num);
//ConsoleWrite(wrd);
r = null;
}
循环里也要把wrd改成wrd[i]

public class TTTTT {
    public static void main(String[] args) {
        String string = "1041011081123210910133";
        Systemoutprintln(asciiToString(string));
    }
    public static String asciiToString(String text) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < textlength(); i++) {
            if (textcharAt(i) <= '2' && i <= textlength() - 3) {
                int code = IntegerparseInt(textsubstring(i, i + 3));
                builderappend((char) code);
                i += 2;
            } else {
                int code = IntegerparseInt(textsubstring(i, i + 2));
                builderappend((char) code);
                i += 1;
            }
        }
        return buildertoString();
    }
}

你这编码很怪啊,结果竟然是help me!

1041011081123210910133
解析起来很麻烦那,不是3位3位的。
104
101
108
112
32
109
101
33

#include<stdioh>

void main(){

char c;

scanf("%c",&c);

printf("%c ASCII是:%d\n",c,c);

}

扩展资料:

ASCII的长度和优点

一、 ASCII由Hollerith卡的编码演变而来。Hollerith卡的编码变为BCDIC编码(6位),在发展为EBCDIC(8位),EBCDIC是IBM的大型机标准。

如果使用6位码,那么可以有64个字符,这样就必须使用转换字符进行扩充,例如:在6位编码中,大写字母没有包含进去,我们就定义个转义字符,如:

\a代表大写字母A,\b代表字母B也就是用已经分配的编码来组合替代未分配的编码这样就会产生很多麻烦。尽管我们有些时候(比如C语言)还是使用转义字符。个人认为这是为了使用的方便而不是扩展。

二、随着计算机的发展,8位字节标准的确立,就可以用一个字节来存储ASCII。这样就多出来128个空位。IBM在1981年推出了这样的256个字符的字符集,包含了一些希腊字母以及其他字符。

三、另外,可以让最高位作为奇偶校验位。例如:“F”的ASCII码为46H,采用奇校验方式,为“0100 0110“,而不是“100 0110 ”。

四、ASCII的优点。26个字母代码是连续的(在EBCDIC代码中就不是这样的);大写字母和小写字母可通过翻转一位就可相互转化;10个数位的代码可从数值本身方便地得到(0是30H,9是39H)。

参考资料来源:ASCII-百度百科


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13370928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存