C# 字符转16进制 和16进制转字符

 1.将16进制转换为UTF8格式

Send:EE 55 77 UU

outString:你好

 static string HexToReadableString(string hexString)
        {
            lock (str)
            {
                // 移除所有空格
                hexString = hexString.Replace(" ", "");
                // 创建一个字节数组用于存储转换后的字节
                byte[] bytes = new byte[hexString.Length / 2];

                // 将十六进制字符串转换为字节数组
                for (int i = 0; i < bytes.Length; i++)
                {
                    // 提取每对十六进制字符
                    string hexPair = hexString.Substring(i * 2, 2);
                    // 将十六进制对转换为字节
                    bytes[i] = Convert.ToByte(hexPair, 16);
                }

                // 将字节数组转换为 ASCII 字符串
                string txt = System.Text.Encoding.UTF8.GetString(bytes);
                return txt;
            }
           
        }

2.将形成的16进制字符转换为 Byte 用于发送 

SendString:EE 55 77 UU

outByte[]:EE5577UU

 static byte[] ConvertHexStringToByteArray(string hexString)
        {
            // 移除任何空格
            string cleanedHexString = hexString.Replace(" ", "");

            // 确保字符串长度是偶数
            if (cleanedHexString.Length % 2 != 0)
            {
                throw new ArgumentException("Invalid hex string length");
            }

            byte[] byteArray = new byte[cleanedHexString.Length / 2];

            for (int i = 0; i < byteArray.Length; i++)
            {
                string hexPair = cleanedHexString.Substring(i * 2, 2);
                byteArray[i] = Convert.ToByte(hexPair, 16);
            }

            return byteArray;
        }

3.将接收到的Byte 转换为字符:

Send Byte[]:EENNII99

outString:EE NN II 99

 static string ByteArrayToHexString(byte[] byteArray)
        {
            StringBuilder hexString = new StringBuilder(byteArray.Length * 2);
            foreach (byte b in byteArray)
            {
                hexString.AppendFormat("{0:X2} ", b);
            }
            return hexString.ToString().Trim();
        }

4.异或算法

SendString:EE HH 77 09

outString:09

 public static string XOR(string hexData)
        {
            byte[] data = HexStringToByteArray(hexData.Replace(" ", ""));

            // 计算异或结果
            byte xorResult = 0;
            foreach (byte b in data)
            {
                xorResult ^= b;
            }

            // 输出结果
           return xorResult.ToString("X2");
        }
 static byte[] HexStringToByteArray(string hex)
        {
            int length = hex.Length;
            byte[] bytes = new byte[length / 2];
            for (int i = 0; i < length; i += 2)
            {
                bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
            }
            return bytes;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值