177 lines
5.4 KiB
C#
177 lines
5.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace JiShe.CollectBus.Common
|
|
{
|
|
public class DataConvert
|
|
{
|
|
/// <summary>
|
|
/// 十进制转二进制
|
|
/// </summary>
|
|
/// <param name="decimalNumber">十进制数</param>
|
|
/// <returns></returns>
|
|
public static string DecToBin(int decimalNumber)
|
|
{
|
|
var binaryString = Convert.ToString(decimalNumber, 2);
|
|
return binaryString;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 二进制转十六进制
|
|
/// </summary>
|
|
/// <param name="binaryString"></param>
|
|
/// <returns></returns>
|
|
public static string BinToHex(string binaryString)
|
|
{
|
|
var decimalNumber = Convert.ToInt32(binaryString, 2);// 将二进制字符串转换为整数
|
|
var hexString = Convert.ToString(decimalNumber, 16); //decimalNumber.ToString("X"); // 将整数转换为十六进制字符串
|
|
return hexString;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 十进制转十六进制
|
|
/// </summary>
|
|
/// <param name="decimalNumber"></param>
|
|
/// <returns></returns>
|
|
public static string DecToHex(int decimalNumber)
|
|
{
|
|
var hexString = decimalNumber.ToString("X");
|
|
return hexString;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 二进制转十进制
|
|
/// </summary>
|
|
/// <param name="binaryString"></param>
|
|
/// <returns></returns>
|
|
public static int BinToDec(string binaryString)
|
|
{
|
|
var decimalNumber = Convert.ToInt32(binaryString, 2);
|
|
return decimalNumber;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 十六进制转十进制
|
|
/// </summary>
|
|
/// <param name="hexString"></param>
|
|
/// <returns></returns>
|
|
public static int HexToDec(string hexString)
|
|
{
|
|
var decimalNumber = Convert.ToInt32(hexString, 16);
|
|
return decimalNumber;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 十六进制转二进制
|
|
/// </summary>
|
|
/// <param name="hexString"></param>
|
|
/// <returns></returns>
|
|
public static string HexToBin(string hexString)
|
|
{
|
|
var binaryValue = Convert.ToString(Convert.ToInt32(hexString, 16), 2);
|
|
return binaryValue;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 字符串倒序
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
/// <returns></returns>
|
|
public static string StringReversed(string str)
|
|
{
|
|
var reversed = new string(str.Reverse().ToArray());
|
|
return reversed;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 字符串分割成2个字符一组
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
/// <returns></returns>
|
|
public static List<string> StringToPairs(string str)
|
|
{
|
|
var pairs = str.Select((ch, index) => new { ch, index })
|
|
.GroupBy(x => x.index / 2)
|
|
.Select(g => string.Concat(g.Select(x => x.ch)))
|
|
.ToList();
|
|
return pairs;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 格式化字符串
|
|
/// </summary>
|
|
/// <param name="str"></param>
|
|
/// <returns></returns>
|
|
public static string StrAddSpan(string str)
|
|
{
|
|
if (str == "")
|
|
{
|
|
return "";
|
|
}
|
|
return Regex.Replace(str.Replace(" ", ""), @"(?<=[0-9A-Za-z]{2})[0-9A-Za-z]{2}", " $0").Trim();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 格式化字符串且反转
|
|
/// </summary>
|
|
/// <param name="ste"></param>
|
|
/// <returns></returns>
|
|
public static string StrReverseOrder(string ste)
|
|
{
|
|
if (ste == "")
|
|
{
|
|
return "";
|
|
}
|
|
string[] strArr = ste.Split(new string[] { " " }, System.StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
return string.Join(" ", strArr.Reverse());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据值加33
|
|
/// </summary>
|
|
/// <param name="Str"></param>
|
|
/// <returns></returns>
|
|
public static string StrAddHex33(string str)
|
|
{
|
|
if (str == "")
|
|
{
|
|
return "";
|
|
}
|
|
string[] strArr = str.Split(new string[] { " " }, System.StringSplitOptions.RemoveEmptyEntries);
|
|
for (int i = 0; i < strArr.Length; i++)
|
|
{
|
|
strArr[i] = (Convert.ToInt32(strArr[i], 16) + Convert.ToInt32("33", 16)).ToString("X2");
|
|
if (strArr[i].Length > 2)
|
|
{
|
|
strArr[i] = strArr[i].Substring(strArr[i].Length - 2);
|
|
}
|
|
}
|
|
return string.Join(" ", strArr);
|
|
}
|
|
|
|
private static string AddHex33(string strGet)
|
|
{
|
|
string result;
|
|
if (string.IsNullOrEmpty(strGet))
|
|
{
|
|
result = "";
|
|
}
|
|
else
|
|
{
|
|
string[] source = StrAddSpan(strGet).Split(new char[]
|
|
{
|
|
' '
|
|
}, StringSplitOptions.RemoveEmptyEntries);
|
|
result = string.Join("", from s in source
|
|
select (Convert.ToInt32(s, 16) + Convert.ToInt32("33", 16)).ToString("X2"));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
}
|
|
}
|