假设我有一个包含十六进制值的字符串。例如:
string command "0xABCD1234";
如何将该字符串转换为另一个字符串(例如string codedString = ...
),以使此新字符串的ASCII编码表示与原始字符串 contents 具有相同的二进制文件?
我需要这样做的原因是因为我有一个来自硬件制造商的库,可以通过SPI将数据从他们的硬件传输到另一块硬件。它们的函数将字符串作为输入,但是当我尝试发送“AA”时,我希望SPI传输二进制10101010,而是传输AA的ascii表示,即0110000101100001。
此外,此十六进制字符串的长度为32个十六进制字符(即256位长)。
答案 0 :(得分:5)
string command = "AA";
int num = int.Parse(command,NumberStyles.HexNumber);
string bits = Convert.ToString(num,2); // <-- 10101010
答案 1 :(得分:-1)
我想我明白你需要什么...这里是主要的代码部分.. asciiStringWithTheRightBytes是你发送给你的命令。
var command = "ABCD1234";
var byteCommand = GetBytesFromHexString(command);
var asciiStringWithTheRightBytes = Encoding.ASCII.GetString(byteCommand);
它使用的子程序在这里......
static byte[] GetBytesFromHexString(string str)
{
byte[] bytes = new byte[str.Length * sizeof(byte)];
for (var i = 0; i < str.Length; i++)
bytes[i] = HexToInt(str[i]);
return bytes;
}
static byte HexToInt(char hexChar)
{
hexChar = char.ToUpper(hexChar); // may not be necessary
return (byte)((int)hexChar < (int)'A' ?
((int)hexChar - (int)'0') :
10 + ((int)hexChar - (int)'A'));
}