重点方法
Convert.ToString()
/Convert.ToInt()
Convert.ToString(12,2); // 将12转为2进制字符串,结果 “1100”
Convert.ToInt("1100",2); // 将2进制字符串转为整数,结果 12
实践
可以写成扩展方法如下:
using System;
using System.Linq;
static class IntegerAndBinaryConverter
{
/// <summary>
/// 整数值转为二进制数组
/// </summary>
/// <param name="resultSize">最终二进制数组的大小,默认32</param>
/// <returns>byte数组</returns>
public static byte[] ToBinaryBits(this int integer, int resultSize = 32)
{
var result = new byte[resultSize];
var binaryString = Convert.ToString(integer, 2);
// 先把string转成char数组,再将char数组中每一个值转为byte(需要减去char类型0的值,即48)。
var binaryBits = binaryString.ToCharArray().Select(i => (byte)(i - 48)).ToArray();
var binarySize = binaryBits.Length;
if (binarySize > resultSize)
{
throw new ArgumentException("设置的结果数组容量不足。");
}
Array.Copy(binaryBits, 0, result, resultSize - binaryBits.Length, binaryBits.Length);
return result;
}
/// <summary>
/// 二进制数组转整数
/// </summary>
/// <returns>整数值</returns>
public static int FromBinaryToInt(this byte[] binaryBits)
{
if (binaryBits.Any(i => i != 0 && i != 1)) // 如果该数组包含有0/1之外的值,则抛出异常
{
throw new ArgumentException("若要使用该方法,byte数组必须只包含0或1。");
}
return Convert.ToInt32(string.Join("", binaryBits), 2);
}
}
使用举例:
var binaryBits=12.ToBinaryBits(8); // [0,0,0,0,1,1,0,0]
var integer=binaryBits.FromBinaryToInt(); // 12