首页 > 编程语言 >C#汉字-区位码相互转化类

C#汉字-区位码相互转化类

时间:2024-12-13 13:43:35浏览次数:6  
标签:string 16 C# bytes 区位码 coding System 汉字

项目中需要对汉字使用区位码进行转化,写了一个类,分享如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rare.Card.Libary.Helper
{
    public class CharacterAreaCodingConvertHelper
    {
        /// <summary>
        /// 汉字转区位码
        /// </summary>
        /// <param name="character"></param>
        /// <returns></returns>
        public static string CharacterToCoding(string character)
        {
            string coding = string.Empty;
            for (int i = 0; i < character.Length; i++)
            {
                byte[] bytes = System.Text.Encoding.GetEncoding("GB2312").GetBytes(character.Substring(i, 1));
                string lowCode = System.Convert.ToString(bytes[0], 16); //取出低字节编码内容(两位16进制)
                if (lowCode.Length == 1)
                    lowCode = "0" + lowCode;
                string hightCode = System.Convert.ToString(bytes[1], 16);//取出高字节编码内容(两位16进制)
                if (hightCode.Length == 1)
                    hightCode = "0" + hightCode;
                coding += (lowCode + hightCode);//加入到字符串中,
            }
            return coding;
        }
        /// <summary>
        /// 区位码取汉字
        /// </summary>
        /// <param name="coding"></param>
        /// <returns></returns>
        public static string CodingToCharacter(string coding)
        {
            string characters = string.Empty;
            if (coding.Length % 4 != 0)//编码为16进制,必须为4的倍数。
            {
                throw new System.Exception("编码格式不正确");
            }
            for (int i = 0; i < coding.Length / 4; i++)
            {
                byte[] bytes = new byte[2];
                int j = i * 4;
                string lowCode = coding.Substring(j, 2); //取出低字节,并以16进制进制转换
                bytes[0] = System.Convert.ToByte(lowCode, 16);
                string highCode = coding.Substring(j + 2, 2); //取出高字节,并以16进制进行转换
                bytes[1] = System.Convert.ToByte(highCode, 16);
                string character = System.Text.Encoding.GetEncoding("GB2312").GetString(bytes);
                characters += character;
            }
            return characters;
        }
    }
}

 

 

 

测试数据:

比如“布”
 查出来的是1828
 18---0x12 -----0x12+0xa0 = 0xB2
 28 ---- 0x1c + 0xA0 ------0xBC
 所以“布”的区位码是B2Bc
字符串:张三的区位码转化以后是D5C5C8FD

标签:string,16,C#,bytes,区位码,coding,System,汉字
From: https://www.cnblogs.com/ILoveJackSparrow/p/18604757

相关文章

  • Post请求的两种编码格式:application/x-www-form-urlencoded和multipart/form-data
    一、前端表单提交时application/x-www-form-urlencoded表单代码:<formaction="http://localhost:8888/task/"method="POST">Firstname:<inputtype="text"name="firstName"value="Mickey&"><br>Last......
  • 【Docker】通过Buildx+BuildKit构建一个多架构Docker镜像
    在【Docker】Docker如何在x86_64平台构建arm64镜像文章中介绍了如何使用buildx在x86架构的机器上构建一个arm架构的docker镜像,当时在构建arm64镜像的时候,第一次引用的基础镜像"java:8u111"是一个x86_64平台的镜像,构建没通过;后面换成了"eclipse-temurin:8-jdk-noble"这个同时支持am......
  • [Linux]Debian 12安装docker
    参考官网:https://docs.docker.com/engine/install/debian/forpkgindocker.iodocker-docdocker-composepodman-dockercontainerdrunc;dosudoapt-getremove$pkg;done#AddDocker'sofficialGPGkey:sudoapt-getupdatesudoapt-getinstallca-certif......
  • C++中多态性在实际项目中的应用场景有哪些?
    一、图形绘制系统:在一个图形绘制系统中,可以定义一个抽象的图形类,然后派生出各种具体的图形类,如圆形、矩形、三角形等。通过多态性,可以使用一个统一的接口来绘制不同类型的图形,而不需要为每种图形都编写单独的绘制函数。二、游戏开发在游戏开发中,不同的游戏角色可能有不同的......
  • 关于数据隐藏:为什么要进行数据隐藏?如何在C++中实现数据隐藏?以及数据隐藏对面向对象编
    一、为什么要进行数据隐藏?数据隐藏可以提高程序的安全性和可维护性。可以将数据成员声明为私有或受保护,可以防止外部代码直接访问和修改这些数据,从而减少错误的发生。同时,数据隐藏也使得类的内部实现细节对外部不可见,这样在修改类的内部实现时,不会影响外部代码的使用。二、......
  • 《安富莱嵌入式周报》第347期:分立元件自制14bit分辨率DAC,开源电池测试仪,大量位操作技
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版https://www.bilibili.com/video/BV1SFq9YAE4j/目录:1、分立元件自制14bit分辨率DAC2、开源电池测试仪3、微软为VSCode制作的AIToolkit插件4、Zephyr相关(1)好消......
  • Chats 开发指南
    Chats开发指南欢迎使用Chats!在我上一篇博客https://www.cnblogs.com/sdcb/p/18597030/sdcb-chats-intro中,我介绍了Chats的各种功能,但所有功能都是用代码一行一行写出来的。在这个指南中,我将帮助您快速上手开发,了解如何在开发阶段使用和配置Chats项目。Chats在开发阶段......
  • python开发环境搭建,包括python、pycharm,每一步都有截图
    一、准备安装包首先,准备好安装包,包括合适版本的python、pycharm、激活工具和激活码。对于python的版本,如果只是学习,选择最新版本就好了。目前开发python的工具主要有VScode与pycharm,强烈推荐pycharm,好用很多!准备好的安装包如下: 二、安装python首先安装pytho......
  • SpringBoot3+Vue3+ArcoDesign后台管理系统源码 | 小蚂蚁云
     项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ArcoDesign、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈......
  • SpringBoot3+Vue3+ArcoDesign | 小蚂蚁云
    项目介绍基于SpringBoot3、SpringSecurity、MybatisPlus、Vue3、TypeScript、Vite、ArcoDesign、MySQL等技术栈实现的单体前后端分离后台管理系统;后端基于Java语言采用SpringBoot3、SpringSecurity、MybatisPlus、MySQL等主流技术栈,前端基于Vue3、TypeScript、Vite等技术栈实......