转换字符串数组转换为十六进制阵列
问题描述:
我有一个字符串数组转换字符串数组转换为十六进制阵列
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;
}
答
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();
}
您定位的语言是? C#? –