42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
namespace DispenserCommon.Utils;
|
||
|
||
public static class ValueUtil
|
||
{
|
||
/// <summary>
|
||
/// 将 int 转为 8 bit 的二进制字符串,前面不足的补 0
|
||
/// </summary>
|
||
public static string Int2BitStr(int val, int bitLen)
|
||
{
|
||
return new string(Int2BitChars(val, bitLen));
|
||
}
|
||
|
||
/// <summary>
|
||
/// </summary>
|
||
/// <param name="val"></param>
|
||
/// <param name="bitLen"></param>
|
||
/// <returns></returns>
|
||
public static char[] Int2BitChars(int val, int bitLen)
|
||
{
|
||
// 直接将整数val转换为二进制字符串,不考虑十六进制。
|
||
var binaryString = Convert.ToString(val, 2);
|
||
|
||
// 如果val为负数,binaryString将包含二进制补码形式的字符串,其长度可能超过bitLen。
|
||
// 根据需要裁剪或填充字符串以适应指定的位长度(bitLen)。
|
||
if (binaryString.Length > bitLen)
|
||
// 对于负数,去除多余的前导'1'。
|
||
binaryString = binaryString.Substring(binaryString.Length - bitLen);
|
||
else
|
||
// 填充以达到所需长度。
|
||
binaryString = binaryString.PadLeft(bitLen, '0');
|
||
|
||
// 反转和转换为字符数组。
|
||
var chars = binaryString.Reverse().ToArray();
|
||
|
||
return chars;
|
||
}
|
||
|
||
public static int BitChars2Int(char[] chars)
|
||
{
|
||
return Convert.ToInt32(new string(chars), 2);
|
||
}
|
||
} |