95 lines
2.4 KiB
C#
95 lines
2.4 KiB
C#
|
|
// See https://aka.ms/new-console-template for more information
|
|||
|
|
using System.Text;
|
|||
|
|
|
|||
|
|
Console.WriteLine("Hello, World!");
|
|||
|
|
|
|||
|
|
string hextstr = "31 31 31 31 31 31 31 40 31 31 31 31 31 40 B3 F8 D3 E0 C0 AC BB F8 40 31 36 36 2E 35 0D 0A ";
|
|||
|
|
hextstr = hextstr.Replace(" ", "");
|
|||
|
|
|
|||
|
|
byte[] bytes = Encoding.UTF8.GetBytes(hextstr);
|
|||
|
|
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
|||
|
|
var a = GetChsFromHex(hextstr);
|
|||
|
|
Console.WriteLine(a);
|
|||
|
|
/// <summary>
|
|||
|
|
/// 16进制转汉字
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="hex"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
static string GetChsFromHex(string hex)
|
|||
|
|
{
|
|||
|
|
if (hex == null)
|
|||
|
|
return "";
|
|||
|
|
if (hex.Length % 2 != 0)
|
|||
|
|
{
|
|||
|
|
hex += "20";//空格
|
|||
|
|
}
|
|||
|
|
// 需要将 hex 转换成 byte 数组。
|
|||
|
|
byte[] bytes = new byte[hex.Length / 2];
|
|||
|
|
for (int i = 0; i < bytes.Length; i++)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
// 每两个字符是一个 byte。
|
|||
|
|
bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
|
|||
|
|
System.Globalization.NumberStyles.HexNumber);
|
|||
|
|
}
|
|||
|
|
catch
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// 获得 GB2312,Chinese Simplified。
|
|||
|
|
Encoding chs = Encoding.GetEncoding("gb2312");
|
|||
|
|
return chs.GetString(bytes);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 16进制转10进制
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="hex"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
static long HextToDec(string hex)
|
|||
|
|
{
|
|||
|
|
char[] nums = hex.ToCharArray();
|
|||
|
|
long total = 0;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
for (int i = 0; i < nums.Length; i++)
|
|||
|
|
{
|
|||
|
|
String strNum = nums[i].ToString().ToUpper();
|
|||
|
|
switch (strNum)
|
|||
|
|
{
|
|||
|
|
case "A":
|
|||
|
|
strNum = "10";
|
|||
|
|
break;
|
|||
|
|
case "B":
|
|||
|
|
strNum = "11";
|
|||
|
|
break;
|
|||
|
|
case "C":
|
|||
|
|
strNum = "12";
|
|||
|
|
break;
|
|||
|
|
case "D":
|
|||
|
|
strNum = "13";
|
|||
|
|
break;
|
|||
|
|
case "E":
|
|||
|
|
strNum = "14";
|
|||
|
|
break;
|
|||
|
|
case "F":
|
|||
|
|
strNum = "15";
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
double power = Math.Pow(16, Convert.ToDouble(nums.Length - i - 1));
|
|||
|
|
total += Convert.ToInt64(strNum) * Convert.ToInt64(power);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
catch (System.Exception ex)
|
|||
|
|
{
|
|||
|
|
string strErorr = ex.ToString();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
return total;
|
|||
|
|
}
|