char有8位,所以两位十六进制的数字可以表示一个char。
把十六进制字符串去空格,转换成char[] 。连续两个char[] 合并成一个string。通过Parse()方法把string转换成十进制Byte[]。Byte[] 最后转换成想要的字符串。
String.Split() 方法通过基于一个或多个分隔符拆分输入字符串来创建子字符串数组。
此方法通常是分隔字边界上的字符串的最简单方法。
它也用于拆分其他特定字符或字符串上的字符串。
ToCharArray() 方法用来将字符串转换成字符数组。
Parse() 方法的用法详见👇
如何在十六进制字符串与数值类型之间转换(C# 编程指南)
namespace DataTypeApplication
class Program
static void Main(string[] args)
string str = "61 62 63 64";
string str1 = hexStrToStr(str);
Console.WriteLine(str1);
private static string hexStrToStr(string str)
string[] strT = str.Split(' ');
string strA = "";
foreach(string strB in strT)
strA += strB;
char[] chars = strA.ToCharArray();
string returnstr = "";
string[] str1 = new string[chars.Length / 2];
for (int i = 0; i < chars.Length / 2; i++)
string str111 = chars[2 * i].ToString() + chars[2 * i + 1].ToString();
uint num = uint.Parse(str111, System.Globalization.NumberStyles.AllowHexSpecifier);
char charr = (char)num;
returnstr = returnstr + charr;
return returnstr;
这种方法适用于TCP/UDP通信时,接收十六进制信息后的内容显示。
// 16进制转字符串
hexToString: function(value) {
let arr = this.groupArray(value), //将16进制字符串进行每两个分组
result = "";
for (var i = 0; i < arr.length; i++) {
result += S...
public static String hexStr2Str(String hex) {
String hexStr = "";
String str = "0123456789ABCDEF"; //16进制能用到的所有字符 0-15
for(int i=0;i<hex.length();i++){
String s = hex.substring(i, i+1);
public static String decodeHex(String hexStr) {
// 定义字符数组,用于保存字符串字符,长度为16进制字符串的一半
byte[] strs = new byte[hexStr.length() / 2];
// 遍历赋值
for (int i = 0; i
笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码。笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码。1)在将字符串转为16进制之前先进行一次转化,先将其转化成为Unicode编码(相当于把中文用英文字符代替),在转化成为16进制。*字符串转为16进制。*16进制转为字符串。
string hexString = "1A"; // 十六进制字符串表示的十进制整数26
int result = Convert.ToInt32(hexString, 16);
解释一下代码:
首先定义一个十六进制字符串表示的十进制整数,例如26的十六进制表示为1A。
然后使用Convert.ToInt32方法将十六进制字符串转换为十进制整数。第一个参数是要转换的字符串,第二个参数指定字符串的进制,这里为16表示十六进制。
执行完上述代码,result变量的值应该为26。