我有十六进制表示以下列格式存储的ascii值。
// Hex reperesention of ascii string
string hexString = "48-65-6C-6C-6F-20-77-6F-72-6C-64-21-21-21";
// Could someone help fill in the blanks here?
private string hexConverter(string hexString)
{
string asciiCharString;
// Convert it
return asciiCharString;
}
所以当被召唤时;
string s = hexConverter(hexString);
字符串s将包含“Hello world !!!”在这种情况下。
答案 0 :(得分:2)
var convertedString = new StringBuilder();
foreach(var hex in hexString.Split('-'))
{
var unicode = int.Parse(hex, NumberStyles.HexNumber);
convertedString.Append((char)unicode);
}
return convertedString.ToString();
答案 1 :(得分:0)
private string hexConverter(string hexString)
{
string asciiCharString ="" ;
var splitResult = hexString.Split('-');
foreach (string hexChar in splitResult )
{
var byteChar = int.Parse(hexChar, NumberStyles.HexNumber);
asciiCharString += (char)byteChar;
}
return asciiCharString;
}
// Test
private void button1_Click(object sender, EventArgs e)
{
string hexString = "48-65-6C-6C-6F-20-77-6F-72-6C-64-21-21-21";
string asciiString = hexConverter(hexString);
MessageBox.Show(asciiString);
}
答案 2 :(得分:0)
让我们打破这个问题...
所以你首先要根据连字符(' - ')分解字符串。为此,我们将使用Split('-')
。这会产生一个字符串数组。
hexString.Split('-')
然后我们想将这些字符串转换为数字。因为这是ASCII,所以我们将每个字符串转换为byte
。
byte.Parse(value, System.Globalization.NumberStyles.HexNumber)
我们有一堆byte
后,我们可以使用ASCII编码器(String
)将其转换为Encoding.ASCII.GetString()
所以要把它们放在一起:
static string hexConverter(string hexString)
{
return Encoding.ASCII.GetString(fetchBytes(hexString).ToArray());
}
static IEnumerable<byte> fetchBytes(String hexString)
{
foreach (var value in hexString.Split('-'))
yield return byte.Parse(value, System.Globalization.NumberStyles.HexNumber);
}
<强>编码
如果您以后决定需要 UTF-8 或其他内容,那么您需要做的只是将Encoding.ASCII
替换为Encoding.UTF8
,其余的逻辑仍然有效。