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);
|
|||
|
}
|
|||
|
}
|