下面是代码(十六进制到十进制的转换)我正在尝试解决.. 我发现错误出现在我已在代码中评论过的地方..
请提供纠正解决方案..
static void Main(string[] args)
{
byte[] byteData;
int n;
byteData = GetBytesFromHexString("001C0014500C0A5B06A4FFFFFFFFFFFFFFFFFFFFFFFFFFFF");
n = byteData.Length;
Console.WriteLine(n);
string s = System.Text.Encoding.UTF8.GetString(byteData, 0, n); //error
Console.WriteLine(s);
Console.ReadLine();
}
public static byte[] GetBytesFromHexString(string hexString)
{
//MessageBox.Show("getbytes ");
if (hexString == null)
return null;
if (hexString.Length % 2 == 1)
hexString = '0' + hexString; // Up to you whether to pad the first or last byte
byte[] data = new byte[hexString.Length / 2];
for (int i = 0; i < data.Length; i++)
{
data[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
Console.WriteLine(data[i]);
}
我得到的输出是: “\ 0 \ 0P \˚F\ n [” 转换的十进制值未编码。
更新 预期输出为“0 28 0 20 80 12 10 91 6 164 255 255 255 255 255 255 255 255 255 255 255 255 255 255”
答案 0 :(得分:1)
而不是
string s = System.Text.Encoding.UTF8.GetString(byteData, 0, n);
写
string s = String.Join(" ", byteData);
答案 1 :(得分:0)
你可以使用它并尝试使用基数(在这种情况下为2)。我曾经写过的这个片段一直帮助着我。
private void ConvHexStringToBitString(ref string strErrorBitMask)
{
try
{
string strTempStr = strErrorBitMask;
if (strTempStr != string.Empty)
{
strTempStr = Convert.ToString(Convert.ToInt32(strTempStr.Replace(" ", "0"), 16), 2);
}
strErrorBitMask = strTempStr.PadLeft(32, '0');
}
catch (Exception ex)
{
LogWithMsg(ex);
}
}