177 lines
5.4 KiB
C#
Raw Normal View History

2024-10-21 13:30:53 +08:00
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;
}
}
}