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

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

时间:2023-10-14 10:13:41浏览次数:19  
标签:机内码 字节 C# 区位码 System 汉字 using byte

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

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

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

 

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

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

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

 

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

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

因此,区位码转换机内码的方法,是加160。

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

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

 

反之,机内码转换区位码的方法,是减160。

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

 

要获取字节序列对应的字符,可以通过Encoding类的Default属性和GetString( )方法来实现。Encoding类的Default属性为Encoding对象。

GetString( )方法声明如下:

public virtual string GetString(

       byte[] bytes

)

 

public virtual string GetString(

       byte[] bytes,

       int index,

       int count

)

 

参数

bytes

类型:System.Byte[]

包含要解码的字节序列的字节数组。

index

类型:System.Int32

第一个要解码的字节的索引。

count

类型:System.Int32

要解码的字节数。

 

返回值

类型:System.String

包含指定字节序列解码结果的 String。

 

      为了便于理解,以下提供区位码部分截图:

(1)、01区

01 0 1 2 3 4 5 6 7 8 9
0     、 。 · ˉ ˇ ¨ 〃 々
1 — ~ ‖ … ‘ ’ “ ” 〔 〕
2 〈 〉 《 》 「 」 『 』 〖 〗
3 【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏
4 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙
5 ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯
6 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″
7 ℃ $ ¤ ¢ £ ‰ § № ☆ ★
8 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※
9 → ← ↑ ↓ 〓
 

(2)、02区

02 0 1 2 3 4 5 6 7 8 9
0   ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ
1 ⅹ       ⒈ ⒉ ⒊
2 ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔
3 ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶
4 ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀
5 ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③
6 ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩   ㈠
7 ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ 
8  Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ
9 Ⅹ Ⅺ Ⅻ  

 

(3)、17区

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; //引用Encoding

using System.Windows.Forms;

 

private void button1_Click(object sender, EventArgs e)

{

    try

    {

        if (textBox1.Text == "")

        {

            MessageBox.Show("文本框不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            textBox1.Focus();

        }

        else

        {

            byte[] array = new byte[2];

            string str = textBox1.Text.Trim();

            string str1 = str.Substring(0, 2);

            string str2 = str.Substring(2, 2);

 

            //区位码转换机内码的方法,是加160

            int front = Convert.ToInt32(str1) + 160;

            int back = Convert.ToInt32(str2) + 160;

            array[0] = (byte)front;

            array[1] = (byte)back;

            textBox2.Text = System.Text.Encoding.Default.GetString(array);

        }

    }

    catch

    {

        MessageBox.Show("请输入正确的区位码", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

        textBox1.Text = "";

        textBox1.Focus();

    }

}

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

相关文章

  • 抽象工厂模式--C++实现
    具体代码实现#include<iostream>usingnamespacestd;classMan{public:virtualvoidshow()=0;};classWoman{public:virtualvoidshow()=0;};classYellowMan:publicMan{public:virtualvoidshow(){cout<<"......
  • 升级Lync Server 2013到Skype for Business 2019(十)
    写在前面在前面几章,我们完成了SkypeforBusiness2019前端服务器,边缘服务器以及新的OOS服务器的创建与配置。从本章开始,我们将介绍如何逐步将LyncServer2013的相关服务切换到SkypeforBusiness2019环境。本章将介绍如何切换OOS服务器。由于新的OOS服务器与旧有的OWA服务器使用......
  • 14.4 Socket 双向数据通信
    所谓双向数据传输指的是客户端与服务端之间可以无差异的实现数据交互,此类功能实现的核心原理是通过创建CreateThread()函数多线程分别接收和发送数据包,这样一旦套接字被建立则两者都可以异步发送消息,本章将实现简单的双向交互功能。首先我们需要封装两个函数,这里RecvFunction函数......
  • 关于 Chrome 开发者工具 Network 面板里观察到的 net ERR_CERT_AUTHORITY_INVALID 错
    我在Chrome访问一个网站时,在Chrome开发者工具Network面板里观察到的netERR_CERT_AUTHORITY_INVALID错误:net::ERR_CERT_AUTHORITY_INVALID这种错误通常会在你试图访问的网站的SSL证书存在问题时出现。SSL(SecureSocketLayer)证书用于建立用户和网站服务器之间的安......
  • Auto CAD 2023 下载及安装教程!!!
    软件介绍:AutoCAD软件是由美国欧特克有限公司(Autodesk)出品的一款自动计算机辅助设计软件,可以用于绘制二维制图和基本三维设计,通过它无需懂得编程,即可自动制图,因此它在全球广泛使用,可以用于土木建筑,装饰装潢,工业制图,工程制图,电子工业,服装加工等多方面领域。 安装和使用教程:1.通过文......
  • 三次握手中每一次没收到报文会发生什么情况?第二次握手传回了 ACK,为什么还要传回 SYN?第
    三次握手中每一次没收到报文会发生什么情况?第一次握手服务端未收到SYN报文服务端不会进行任何的动作,而客户端由于一段时间内没有收到服务端发来的确认报文,等待一段时间后会重新发送SYN报文,如果仍然没有回应,会重复这个过程,直到发送次数超过最大重传次数限制,就会返回连接建立失败。......
  • ReentrantLock实现原理
    ReentrantLock是可重入的独占锁,只能有一个线程可以获取该锁,其它获取该锁的线程会被阻塞而被放入该锁的阻塞队列里面。看看ReentrantLock的加锁操作://创建非公平锁ReentrantLocklock=newReentrantLock();//获取锁操作lock.lock();try{//执行代码逻辑}catch(Except......
  • [MRCTF2020]Ezpop
    原理反序列化解题过程记得tostring的触发方式!还有urlencode只要是通过get请求,参数记得url编码https://blog.csdn.net/pakho_C/article/details/126057111......
  • 应用系统-业务逻辑写入在分层结构中Service层
    应用系统-业务逻辑写入在分层结构中Service层      近日,关于我们某同学在研发过程中一些设计问题,再次回归老生常谈的问题:业务逻辑写在哪儿一层?过去二十年软件开发过程中,大部分开发者喜欢使用存储过程(SP),用SP解决一系列业务处理过程,在信息系统中时常听到有SP的存储。各大......
  • C#中如何获得汉字的区位码?
    1、区位码转换为国标码方法如下:国标码高位字节=(区号)H+20H国标码低位字节=(位号)H+20H 2、国标码转换为机内码方法如下:机内码高位字节=(国标码)H+80H机内码低位字节=(国标码)H+80H 3、区位码转换为机内码方法如下:可见,区位码到机内码加了两次:20H+80H=32+128=16......