Converting from string to byte
我有一根弦,它是
1 2 3 4 5 6 7 | string tmp ="40FA"; int uid_1 = Convert.ToInt32(tmp.Substring(0, 2), 16); int uid_2 = Convert.ToInt32(tmp.Substring(2, 2), 16); int test = uid_1 ^ uid_2 ; string final = test.ToString("X"); byte byteresult = Byte.Parse(final , NumberStyles.HexNumber); |
尝试调用该函数,它会将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | private byte[] String_To_Bytes2(string strInput) { int numBytes = (strInput.Length) / 2; byte[] bytes = new byte[numBytes]; for (int x = 0; x < numBytes; ++x) { bytes[x] = Convert.ToByte(strInput.Substring(x * 2, 2), 16); } return bytes; } static void Main(string[] args) { string tmp ="40FA"; int uid_1 = Convert.ToInt32(tmp.Substring(0, 2), 16); int uid_2 = Convert.ToInt32(tmp.Substring(2, 2), 16); int test = uid_1 ^ uid_2; string final = test.ToString("X"); byte[] toBytes = String_To_Bytes2(final); Console.WriteLine(toBytes); Console.ReadKey(); } |
尝试:
1 2 3 4 5 | byte[] toBytes = Encoding.ASCII.GetBytes(somestring); and for bytes to string string something = Encoding.ASCII.GetString(toBytes); |
我想这里有点误会。你实际上已经解决了你的问题。计算机不关心数字是十进制、十六进制、八进制还是二进制。这些只是一个数字的表示。所以只有你才关心它的显示方式。
正如Dmitrybenko所说:0XBA与186号相同。如果你想把它存储在那里,对你的字节数组来说并不重要。它只对你作为一个用户重要,如果你想显示它。
编辑:您可以通过运行以下代码行来测试它:
1 | Console.WriteLine((byteresult == Convert.ToInt32("BA", 16)).ToString()); |
如果我从你的评论中正确地理解了你,你的代码实际上就是你想要的。
1 2 3 4 5 6 7 8 9 | string tmp ="40FA"; int uid_1 = Convert.ToInt32(tmp.Substring(0, 2), 16); int uid_2 = Convert.ToInt32(tmp.Substring(2, 2), 16); int test = uid_1 ^ uid_2 ; string final = test.ToString("X"); // here you actually have achieved what you wanted. byte byteresult = Byte.Parse(final , NumberStyles.HexNumber); |
现在您可以使用
1 2 |
应该毫无问题地执行。
您的输入似乎是十六进制值,所以您需要将两个数字解析为一个字节。然后XOR这两个字节。
结果是十进制的
1 2 3 4 5 | string tmp ="40FA"; byte uid_1 = byte.Parse(tmp.Substring(0, 2), NumberStyles.HexNumber); byte uid_2 = byte.Parse(tmp.Substring(2, 2), NumberStyles.HexNumber); byte test = (byte)(uid_1 ^ uid_2); // = 186 (decimal) = BA (hexadecimal) string result = test.ToString("X"); |