转换字符串数组转换为十六进制阵列

转换字符串数组转换为十六进制阵列

问题描述:

我有一个字符串数组转换字符串数组转换为十六进制阵列

Receivedbyte[0]=5A 
Receivedbyte[1]=3A 
Receivedbyte[2]=7A 
Receivedbyte[3]=60 

我想将它们视为十六进制数和0x20的异或的每个值。 所以我想我的数据是 0x5A^0x20在第0个位置。等等。

我尝试了以下操作,但出现错误说输入字符串格式不正确。

static public string[] escapeFix(string[] Receivedbyte) 
     {   
      uint temp = Convert.ToUInt32(Receivedbyte[1]); 

      temp = temp^0x20; 
      Receivedbyte[0] = Convert.ToString(temp); 
      Receivedbyte[1] = Receivedbyte[2]; 
      Receivedbyte[2] = Receivedbyte[3]; 
      return Receivedbyte; 
     } 
+0

您定位的语言是? C#? –

Convert.ToUInt32试图解析十进制字符串,但你输入十六进制,因此错误。尝试byte.Parse(ReceivedBytes[1], NumberStyles.AllowHexSpecifier)

uint.ToString()也转换为十进制表示。你的意思是转换为十六进制?那么你应该.ToString("X")

您的代码在解析完成后会执行什么操作,与您所描述的内容完全相反。 您将以[“26”,“7A”,“60”,“60”]结尾,其中“26”是0x3A^0x20,26的十进制表示。

为什么你首先搞乱了字符串?你不能只使用byte[]?像:

public static byte[] EscapeFix(byte[] receivedBytes) 
{ 
    return receivedBytes.Select(b => (byte)(b^0x20)).ToArray(); 
}