首页 > 编程语言 >C#中如何根据GB2312字符集区位码获得汉字?

C#中如何根据GB2312字符集区位码获得汉字?

时间:2023-10-22 10:34:23浏览次数:33  
标签:机内码 字节 C# 区位码 GB2312 System 国标码 using

一、GB2312字符集汉字编码间的转换

1、区位码转换为国标码方法如下:

国标码高位字节=(区号)H+20H

国标码低位字节=(位号)H+20H

区位码转换为国标码的方法是加2020H

 

2、国标码转换为机内码方法如下:

机内码高位字节=(国标码)H+80H

机内码低位字节=(国标码)H+80H

国标码转换为机内码的方法是加8080H

 

3、区位码转换为机内码方法如下:

可见,区位码到机内码加了两次:20H + 80H = 32 + 128 = 160 = A0H

因此,区位码转换机内码的方法,是高位字节和低位字节加160。

机内码高位字节=(区号)H+A0H

机内码低位字节=(位号)H+A0H

区位码转换为机内码的方法是加A0 A0H

      

4、机内码转换为区位码方法如下:

机内码转换区位码的方法,是高位字节和低位字节减160。

机内码转换为区位码的方法是减A0A0H

 

注意:计算机使用的字符都为机内码!

 

二、部分GB2312字符集

      为帮助理解,以下提供部分GB2312字符集。

01 0 1 2 3 4 5 6 7 8 9
0     、 。 · ˉ ˇ ¨ 〃 々
1 — ~ ‖ … ‘ ’ “ ” 〔 〕
2 〈 〉 《 》 「 」 『 』 〖 〗
3 【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏
4 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙
5 ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯
6 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″
7 ℃ $ ¤ ¢ £ ‰ § № ☆ ★
8 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※
9 → ← ↑ ↓ 〓
 
02 0 1 2 3 4 5 6 7 8 9
0   ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ
1 ⅹ       ⒈ ⒉ ⒊
2 ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔
3 ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶
4 ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀
5 ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③
6 ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩   ㈠
7 ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ 
8  Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ
9 Ⅹ Ⅺ Ⅻ  
 
03 0 1 2 3 4 5 6 7 8 9
0   ! " # ¥ % & ' ( )
1 * + , - . / 0 1 2 3
2 4 5 6 7 8 9 : ; < =
3 > ? @ A B C D E F G
4 H I J K L M N O P Q
5 R S T U V W X Y Z [
6 \ ] ^ _ ` a b c d e
7 f g h i j k l m n o
8 p q r s t u v w x y
9 z { | }  ̄

 

17 0 1 2 3 4 5 6 7 8 9
0   薄 雹 保 堡 饱 宝 抱 报 暴
1 豹 鲍 爆 杯 碑 悲 卑 北 辈 背
2 贝 钡 倍 狈 备 惫 焙 被 奔 苯
3 本 笨 崩 绷 甭 泵 蹦 迸 逼 鼻
4 比 鄙 笔 彼 碧 蓖 蔽 毕 毙 毖
5 币 庇 痹 闭 敝 弊 必 辟 壁 臂
6 避 陛 鞭 边 编 贬 扁 便 变 卞
7 辨 辩 辫 遍 标 彪 膘 表 鳖 憋
8 别 瘪 彬 斌 濒 滨 宾 摈 兵 冰
9 柄 丙 秉 饼 炳

 

      本例的关键代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Text; //引用Encoding类

 

namespace Ex04_19

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            textBox1.Text = "17";

            textBox2.Text = "3";

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            byte[]pArray = new byte[2];

 

            //获取区号

            string strRegion = textBox1.Text.Trim();

            int iRegion = Convert.ToByte(strRegion);

 

            //获取码位

            string strPos = textBox2.Text.Trim();

            int iPos = Convert.ToByte(strPos);

 

            //前两位加160,存入字节数组

            pArray[0]=(byte)(iRegion+160);

 

            //后两位加160,存入字节数组

            pArray[1]=(byte)(iPos+160);

 

            //由字节数组获得汉字

            Encoding defEnd = Encoding.Default;

            string chinese = defEnd.GetString(pArray);

 

            textBox3.Text = chinese;

        }

    }

}

标签:机内码,字节,C#,区位码,GB2312,System,国标码,using
From: https://www.cnblogs.com/it001xyz/p/17780006.html

相关文章

  • Lenovo-Yoga-14S-4800U电脑 Hackintosh 黑苹果efi引导文件
    关于Lenovo-Yoga-14S-4800U黑苹果使用体验在过去的几个月里,我(黑果魏叔)一直在使用Lenovo-Yoga-14S-4800U黑苹果,今天我想分享一下我的使用体验。首先,我(黑果魏叔)想谈谈这款电脑的外观设计。Lenovo-Yoga-14S-4800U黑苹果的外观非常简洁,没有多余的装饰,看起来非常时尚。它的机身采用了金......
  • 17.1 隐藏执行CMD命令
    本章内容涉及使用SocketAPI和CMD命令行工具实现本地CMD命令执行、无管道正向CMD和无管道反向CMD三种功能。执行本地CMD实现使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。无管道正向CMD和无管道反向CMD使用W......
  • oracle使用dblink连接postgresql
    环境:oracle    数据库:192.168.22.201端口号6666操作系统:RHEL7.6postgresql数据库:192.168.22.20  端口号5432操作系统:RHEL7.6pg数据库配置1、修改pg_hba.conf文件hostalllanmc192.168.22.201/24md52、重新加载服务systemctlreloadpostgresql-15.serviceo......
  • docker搭建网安靶场教程
    Docker拉取靶场环境docker是一个很好用的容器服务,它相当于在你的虚拟机中生成无数个容器,可以供开发人员使用,假设一个环境,如果你想搭建网安靶场环境供自己练习,那么常规情况下你就要去VM里开环境自己搭建,这样是非常慢的,不如使用docker服务,而且还可以上网上拉取自己想要的镜像,同样......
  • 17.1 隐藏执行CMD命令
    本章内容涉及使用SocketAPI和CMD命令行工具实现本地CMD命令执行、无管道正向CMD和无管道反向CMD三种功能。执行本地CMD实现使用CreateProcess函数创建一个新的CMD进程,并将标准输入、输出和错误输出重定向到当前进程的标准输入、输出和错误输出。无管道正向CMD和无管道反向CMD使用......
  • swin transformer v1.0环境配置训练(mmsegmentation/pascalvoc数据集)
    本文选用mmlab的mmsegmentationv1.1.0的语义分割为例。吨吨吨弟弟123554###1.配置环境要求官网中的最低要求为cuda10.2+以及pytorch1.8+.......
  • CSP-S2023 游记
    更好的阅读体验CSP-S2023题解Day-1打了一场挺简单的模拟赛,得了300pts。但是这场好像真的很简单啊/摊手。Day0打了一场超级无敌原神难度的模拟赛,得了96pts。怎么感觉昨天的更像信心赛一点/kk下午选择忘记这场令人悲伤的模拟赛,但是还是没法忘掉啊/ng。晚上放假,回家和......
  • ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器
    这一篇学习笔记我在新浪博客记录过,地址是ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍。前段时间测试了一下WINCC7.5SP2web发布功能,并且在本机和远程计算机上IE浏览器访问成功。今天结合一下以前的练习,做ABBFRE......
  • CSP-S2023 题解
    更好的阅读体验CSP-S2023游记密码锁(lock)\(10^5\)枚举所有可能答案,然后判断。代码#include<bits/stdc++.h>intn;inta[13][7],b[7];boolcheck(inti){ intcnt=0; for(intj=1;j<=5;j++)cnt+=(a[i][j]!=b[j]); if(cnt==1)returntrue; else......
  • ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1
    这一篇博客我爱新浪博客发表过,地址是ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍今天在家做一下freelance2019SP1的OPC通讯练习。新建一个freelance项目,插入硬件和软件、OPC网关、OS等,按照以前的练习配置资源......