[英]How can convert a hex string into a string whose ASCII values have the same value in C#?
假設我有一個包含十六進制值的字符串。 例如:
string command "0xABCD1234";
如何將該字符串轉換為另一個字符串(例如, string codedString = ...
),以使該新字符串的ASCII編碼表示形式具有與原始字符串內容相同的二進制文件?
之所以需要這樣做,是因為我有一個硬件制造商提供的庫,可以通過SPI將數據從其硬件傳輸到另一硬件。 它們的函數將字符串作為輸入,但是當我嘗試發送“ AA”時,我期望SPI傳輸二進制10101010,但相反,它將傳輸AA的ascii表示0110000101100001。
另外,此十六進制字符串的長度將為32個十六進制字符(即256位長)。
string command = "AA";
int num = int.Parse(command,NumberStyles.HexNumber);
string bits = Convert.ToString(num,2); // <-- 10101010
我想我了解您的需要...這是主要的代碼部分。.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'));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.