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

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

时间:2023-10-21 10:00:36浏览次数:43  
标签:机内码 字节 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字符集

    为帮助理解,以下提供部分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 = "弗";

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            string strSource = textBox1.Text.Trim();

 

            //C#缺省的字符集为GB2312-80

            Encoding defEnd = Encoding.Default;

 

            byte[] array2 = defEnd.GetBytes(strSource);

            int iFrist = array2[0];

            int iFrist1 = iFrist - 160;

            int iSecond = array2[1];

            int iSecond1 = iSecond - 160;

 

            string strFront, strBack;

            if (iFrist1 < 10)

                strFront = "0" + iFrist1.ToString();

            else

                strFront = iFrist1.ToString();

 

            if (iSecond1 < 10)

                strBack = "0" + iSecond1.ToString();

            else

                strBack = iSecond1.ToString();

 

            textBox2.Text = strFront;

            textBox3.Text = strBack;

        }

    }

}

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

相关文章

  • [swin-trans]分布式训练的debug:ValueError: Error initializing torch.distributed us
    在用torch.distributed.init_process_group(backend='nccl',init_method='env://',world_size=world_size,rank=rank)时,出现1、ValueError:Errorinitializingtorch.distributedusingenv://rendezvous:environmentvariableMASTER_ADDRexpected,b......
  • make clean命令清理在不同目录中编译的对象
    gnu-makemakefile UsingMakefiletocleansubdirectories是否可以从父目录执行makeclean,而该父目录又递归清除所有子目录,而不必在每个子目录中都包含makefile?例如,当前在我的Makefile中,我有类似以下内容:123456789SUBDIRS=src,src1.PHONY:cleansubdirs$(S......
  • Makefile详解—clean
    每个Makefile中都应该写一个清空目标文件(.o和执行文件)的规则,这不仅便于重编译,也很利于保持文件的清洁。这是一个“修养”。一般的风格都是: clean:rmedit$(objects) 更为稳健的做法是: .PHONY:cleanclean:-rmedit$(objects) 前面说过,.PHONY意思表示clean是一......
  • Python:Anaconda安装虚拟环境到指定路径
    anaconda 总是会把虚拟环境默认安装至C盘,但是C盘容量有限,所以目标将虚拟环境安装至其他盘。步骤如下:通过查阅anaconda的文档,发现是可以进行指定路径安装的。可以输入如下命令进行查看:condacreate--help安装虚拟环境到指定路径的命令如下:condacreate--prefix=F:\sofe......
  • 基于Go语言跟我一起写DApp-转型区块链应用开发推荐课程GoSDK+Fisco-Bcos
    基于Go语言跟我一起写DApp-转型区块链应用开发推荐课程GoSDK+Fisco-Bcos0介绍学习目标:1、理解什么是区块链;2、掌握区块链基本结构;3、构建区块链基本模型;理论部分:1、区块链七层架构模型;2、区块链链式结构;实践部分:1、创建区块;2、创建区块的“链”;3、访问区块链;开发环境:GoL......
  • K8S使用开源CEPH作为后端StorageClass
    1引言K8S在1.13版本开始支持使用Ceph作为StorageClass。其中云原生存储Rook和开源Ceph应用都非常广泛。本文主要介绍K8S如何对接开源Ceph使用RBD卷。K8S对接Ceph的技术栈如下图所示。K8S主要通过容器存储接口CSI和Ceph进行交互。https://docs.ceph.com/en/reef/rbd/rbd-kuber......
  • Educational Codeforces Round 149 (Rated for Div. 2)
    这场D被切穿了。A题答案为x或者x-11B题答案就是最长的连续一段的长度+1证明的话大概可以将它看成是几段连续上升和下降的段,然后在峰谷、峰顶分别填上最小、最大,剩下的就依次递增或递减就行。C题将一段连续的0/1视作一个块,那么我们最小化这个块的数量就行。D题如果猜到......
  • 0xGame 2023【WEEK2】Crypto全解
    中间的那个人题目信息fromsecretimportflagfromCrypto.Util.numberimport*fromCrypto.CipherimportAESfromhashlibimportsha256fromrandomimport*p=getPrime(128)g=2A=getrandbits(32)B=getrandbits(32)Alice=pow(g,A,p)Bob=pow(g,B,p)......
  • [LeetCode] 1726. Tuple with Same Product
    Givenanarray nums of distinct positiveintegers,return thenumberoftuples (a,b,c,d) suchthat a*b=c*d where a, b, c,and d areelementsof nums,and a!=b!=c!=d.Example1:Input:nums=[2,3,4,6]Output:8Explanation:Ther......
  • uboot/Linux下MMC/SD/SDIO阅读记录
    1uboot下MMC/SD/SDIO1.1uboot下MMC/SD/SDIO相关配置uboot下关于MMC/SD/SDIO驱动以及工具配置:DeviceDrivers->MMCHostcontrollerSupportMMC/SD/SDIOcardsupport supportforMMC/SDwriteoperations--支持对MMC/SD/SDCar......