golang 使用hex包,转换文件的16进制字符、16进制字节数组

某些特殊情况下需要根据文件的16进制转换成字符

  1. 在linux系统用vim 保存一个文件,写入两行内容
这是测试A
这是测试B
  1. 用linux 的xxd 命令输出文件的16进制字节数组
xxd -g 1 -i t.txt
unsigned char t_txt[] = {
  0xe8, 0xbf, 0x99, 0xe6, 0x98, 0xaf, 0xe6, 0xb5, 0x8b, 0xe8, 0xaf, 0x95,
  0x41, 0x0a, 0xe8, 0xbf, 0x99, 0xe6, 0x98, 0xaf, 0xe6, 0xb5, 0x8b, 0xe8,
  0xaf, 0x95, 0x42, 0x0a
};
  1. 用xxd命令输出文件的16 进制字符,其实就是将16进制前面的0x去掉,两个字节展示在一起。
xxd  t.txt
0000000: e8bf 99e6 98af e6b5 8be8 af95 410a e8bf  ............A...
0000010: 99e6 98af e6b5 8be8 af95 420a            ..........B.
  1. 复制16进制的字节数组、16进制的字符串,到golang代码。
func main() {
	byteData := []byte{
		0xe8, 0xbf, 0x99, 0xe6, 0x98, 0xaf, 0xe6, 0xb5, 0x8b, 0xe8, 0xaf, 0x95,
		0x41, 0x0a, 0xe8, 0xbf, 0x99, 0xe6, 0x98, 0xaf, 0xe6, 0xb5, 0x8b, 0xe8,
		0xaf, 0x95, 0x42, 0x0a,
	}
	// 将16进制的字节数组,转换成字符串
	fmt.Println("string", string(byteData))
	// 将16进制的字节数组,转换成16进制的字符串
	hexString := hex.EncodeToString(byteData)
	fmt.Println("EncodeToString", hexString)
        // 只复制文件内容,去掉空格
	byteStr := "e8bf99e698afe6b58be8af95410ae8bf" + "99e698afe6b58be8af95420a"
	// 将文件的16进制字符串,转换成字符串
	strByte, _ := hex.DecodeString(byteStr)
	fmt.Println(string(strByte))
}
  1. 以下是打印输出
这是测试A
这是测试B

string 这是测试A
这是测试B

EncodeToString e8bf99e698afe6b58be8af95410ae8bf99e698afe6b58be8af95420a

posted @ 2024-01-31 16:04  熊先生不开玩笑  阅读(430)  评论(0)    收藏  举报