用goalng实现ascii、UCS2、UTF-8文本字符串的解码与编码

golang中ascll和string字符串的相互转化 文章目录背景ascll 码转字符/string字符转 ascll 码string 转 ascll 码 背景 ascll 码转化方面和 java 很不相同,golang 中的字符分为 rune 和 byte,但是 rune 和 byte 类型的输出的样式都是数字的样式,真正能输出字符样式的只有 string ascll 码转字符/string // ascll 码 i := 48 // 转换成 rune 字符类型,但是打印出来发现依然是数字样式 var r rune = rune(i) // 真正可以输出字符 阅读详情

用goalng实现ANSI、UCS2、UTF-8文本字符串的解码与编码

用到的外部包:

"github.com/axgle/mahonia"

ANSI的解码与编码

未解码内容示例:

C4E3BAC3D1BDA3ACBAC3BFAAD0C4A3A1

解码之后内容:

你好呀,好开心!

解码代码:

func Ansi2String(ascii string) string {
	var baKeyword = make([]byte, len(ascii)/2)
	for i := 0; i < len(baKeyword); i++ {
		baKeyword[i] = byte(0xff & StringToInt64(ascii[i*2:i*2+2]))
	}
	return mahonia.NewDecoder("GBK").ConvertString(string(baKeyword[:]))
}

func StringToInt64(str string) int64 {
	if val, err := strconv.ParseInt(str, 16, 64); err != nil {
		panic(err)
	} else {
		return val
	}
	return 0
}

编码代码:

func String2Ansi(str string) string {
	if str == "" {
		return ""
	}
	bytesTemp := []byte(mahonia.NewEncoder("GBK").ConvertString(str))
	var buffer bytes.Buffer
	for i := 0; i < len(bytesTemp); i++ {
		buffer.WriteString(fmt.Sprintf("%02x", bytesTemp[i]&0xff))
	}
	return strings.ToUpper(mahonia.NewEncoder("UTF-8").ConvertString(buffer.String()))
}

UCS2的解码与编码

未解码内容示例:

4F60597D5440FF0C597D5F005FC3FF01

解码之后内容:

你好呀,好开心!

解码:

func Ucs2Tostring(str string) string {
	var sUnicodev = make([]string, 0)
	for i := 0; i < len(str); i = i + 4 {
		sUnicodev = append(sUnicodev, str[i:i+4])
	}
	var context string
	for _, v := range sUnicodev {
		if len(v) < 1 {
			continue
		}
		temp, err := strconv.ParseInt(v, 16, 32)
		if err != nil {
			panic(err)
		}
		context += fmt.Sprintf("%c", temp)
	}
	return context
}

编码:

func StringToucs2(inStr string) string {
	if inStr == "" {
		return ""
	}
	u := utf16.Encode([]rune(inStr))
	dst := make([]byte, len(u)*2)
	wi := 0
	for _, r := range u {
		binary.BigEndian.PutUint16(dst[wi:], uint16(r))
		wi += 2
	}
	return strings.ToUpper(fmt.Sprintf("%x", dst))
}

UTF-8的编码与解码

未解码内容示例:

E4BDA0E5A5BDE59180EFBC8CE5A5BDE5BC80E5BF83EFBC81

解码之后内容:

你好呀,好开心!

解码:

func Utf8Encode2String(str string) string {
	hexData, err := hex.DecodeString(str)
	if err != nil {
		panic(err)
	}
	// 将 byte 转换 为字符串 输出结果
	return string(hexData)
}

编码:

func String2Utf8(str string) string{
	return strings.ToUpper(fmt.Sprintf("%x", str))
}
去解析器的ANSI字符串-Golang开发 用于解析ANSI编码字符串的库Go ANSI Parser将带有ANSI转义码的字符串转换为代表样式文本的结构片段。 用于解析ANSI编码的字符串的库Go ANSI Parser将带有ANSI转义码的字符串转换为代表样式文本的结构片段。 功能:可以解析ANSI 16、256和TrueColor支持所有样式:常规,粗体,淡淡,斜体,闪烁,反色,不可见,带下划线,删除线为解析的颜色提供RGB,十六进制,HSL,ANSI ID和名称可配置的颜色图用于自定义100%测试覆盖率安装,请访问github.com/leaanthony/go-ansi-parser U 立即下载

相关推荐

聚类分析之——Kmeans算法(一)

原创地址:http://www.toutiao.com/i6399454239554273794/ 聚类分析是一种静态数据分析方法,常被用于数据挖掘、机器学习、模式识别等领域,聚类是一种无监督式的学习方法。它是在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法。聚类的算法有很多

june2017的博客 3533

golang 解析UTF8编码形式的字符串

go语言解析序列化成UTF-8码的JSON字符串

拒绝八股文从我做起 1837

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战

摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。

m0_64424835的博客 613

goalng知识点-字符串

字符串类型 Go 语言中的字符串是一个字节切片。把内容放在双引号""之间,我们可以创建一个字符串。并且字符串是不可变的。 以下是一个简单的示例: package main import ( "fmt" ) func main() { name := ...

ciebiao1634的博客 291

FPGA时钟架构解密:从SRCC/MRCC到全局时钟树的实战指南

本文深入解析Xilinx 7系列FPGA时钟架构,从SRCC/MRCC引脚特性到全局时钟树设计,详细介绍了BUFG、BUFMR等关键组件的应用场景和优化策略。通过对比SRCC与MRCC的驱动范围及适用场景,提供低抖动时钟布线技巧和时钟域交叉(CDC)设计方法,帮助工程师构建高性能FPGA时钟系统。

weixin_29191081的博客 1484

DSP复习笔记(5)——外部接口模块XINTF

【注意】 1. 芯片型号:TMS320F28335 2. 适用于NJUSTEO李彧晟老师课程 3. 参考资料:《TMS320F28335 DSP原理、开发及应用》 4. 对应PPT第二章 5. 本章内容较多而且较为重要,请结合PPT一起复习

BerenCamlost的博客 1万+

golang学习笔记--函数

go语言学习笔记(尚硅谷的教程)

m0_60707623的博客 293

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5029

json文件出现ascii码问题解决办法,全网最简单

在学习爬虫时需要经常用到json文件,但是每次用到data=json.dumps(w_dic)就会乱码,其实就是ASCII码,在网上找了好久发现,如果加 ensure_ascii=False就都能正常显示变成了汉字 data=json.dumps(w_dic,ensure_ascii=False) 使用有效 望采纳! ...

qq_30498151的博客 1818

19、硬件工程师笔试面试——无线通讯模块(2025版本)

例如,如果你的项目需要传输大量数据,如视频流或大数据文件,那么你可能需要一个高速率的模块,如支持802.11ac或802.11ax(WiFi 6)的模块。如果你的数据传输需求较小,如传感器数据,那么一个较低速率的模块,如蓝牙或Zigbee,可能就足够了。较高的频率(如5GHz)提供更大的带宽,支持更高的数据传输速率,但信号覆盖范围较小,穿透能力较弱。例如,在蓝牙通信中,一台设备作为主机,另一台设备作为从机,它们通过频率跳频的方式确定连接,并在连接建立后通过特定的协议进行数据交换。

XU157303764的博客 3226

YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

know_F0727的博客 192

Golang基础 (字符型[byte和rune])

一.字符型概述 字符型存放单个字母或单个文字 Go语言不支持字符类型,在Go语言中所有字符值都转换为对应的编码表中int32值 Go语言默认使用UTF-8编码 Go语言的字符有以下两种:一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型 二.编码发展历史 最开始使用8个可开合晶体管

qq_31387691的博客 951

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

GO语言编码转换

  应用场景: 读取文件的时候乱码 问题:在 Golang 的调试过程中出现中文乱码  原因:Golang 默认不支持 UTF-8 以外的字符集  解决:将字符串的编码转换成UTF-8 首先需要 mahonia 这个包 go get github.com/axgle/mahonia   然后新建一个 func  src 字符串  srcCode 字符串当前编码  tagCode 要转换...

Clown95 2835

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

16进制转ascii

#include #include #include #include #include #include #include #include typedef unsigned char uint8; uint8 ConverseOneChar(u

程序狗的成长之路 1870

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

GoLang之string底层系列一(UTF-8编码)

GoLang之UTF编码与string底层

weixin_52690231的博客 2595

GO字符串转十进制整型原生算法

问题 如何把“123”转化为一个十进制的int整型?go语言自身提供了strconv包,但是性能太低,耗时太长,因此手动写一个算法提升性能。 期望输出 input:“123” output:123 思路 遍历数组用&运算算出结果 把每次的运算结果累加 代码 //Str2Int 数字必须是十进制数 0-9 func Str2Int(s string) int { var num int...

听风看海的博客 3356

[golang]-go中字符串操作和转换简介

介绍了golang中字符串基本知识:初始化、长度、截取(子串)等等;以及字符串操作包strings(常用字符串操作,如分割、前后缀判断与截取、移除空白等),和转换包strconv(字符串与其他类型间的转换)

飞鹰技术 4594

从零带你学习Go语言:7、Go 字符串操作和转换

一个字符串是一个不可改变的字节序列,它是一个只读的字节数组,因此使用len()函数时,获取的是字符串字节数,而不是字符的个数。

weixin_54707168的博客 1301

Golang BCD码和string互转

Golang BCD码和string互转 package main import ( "fmt" "strconv" "strings" ) func main() { TestBcd2Number() } func TestBcd2Number() { bcd := Hex2Byte("ffff1012") fmt.Printf("bcd: %v\n", bcd) number := Bcd2Number(bcd) fmt.Printf("bcd2number: %v\n", nu

qq_32019341的博客 1917

go语言读取文件的时候中文乱码

这里以txt文件为例 点击文件另存为 将编码ANSI改为utf -8,保存覆盖即可。别的csv等格式同样方法处理。

qq_40815295的博客 5154

GoLang之标准库unicode/utf8包

GoLang之标准库unicode/utf8包

weixin_52690231的博客 2717

golang遍历字符串 ASCII unicode区别

package main import "fmt" func main() { theme := "狙击 start" for i := 0; i < len(theme); i++ { fmt.Printf("ascii:%c %d\n", theme[i], theme[i]) } fmt.Println("&&&&&&&&&&&&&&&&&&a.

ens160的博客 1115

golang数据

为多平台下的字符和文本提供唯一的标识码,

weixin_64299352的博客 1160

bug:生产问题,Golang解决csv文件用excel打开中文乱码问题及常见编码和BOM头关系

bug:Golang解决csv文件用excel打开中文乱码问题

weixin_45565886的博客 2325

golang 字符编码 gbk/gb2312 utf8编码相互转换,判断字符是否gbk编码函数, 字符编码转换基础原理解析, golang默认编码utf8

虽然golang里面的默认编码都是统一的unicode utf8编码, 但是我们在调用外部系统提供的api时,就可能会遇到别人的接口提供的编码非 utf8编码,而是gbk/gb2312编码, 这时候我们就必须要将别人的gbk编码转换为go语言里面的默认编码utf8。GB2312编码的范围: 十进制 => 高位字节:161 - 247, 十六进制:0xA1 - 0xF7;低位字节:161 - 254 , 十六进制:0xA1 - 0xFE。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 2490
上一篇: apollo配置中心实现logback.xml配置管理与热更新
下一篇: 用goalng实现7bit编解码
想吃窝窝头
博客等级 码龄7年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值