如何将存储在数组中的整数转换为二进制
本文关键字:整数 转换 二进制 数组 存储 | 更新日期: 2023-09-27 18:12:59
我知道如何将整数从十进制转换为固定长度的二进制字符串:
int number = 3;
int toBase = 2;
int length = 8;
Convert.ToString(number, toBase).PadLeft(length, '0')
输出:
00000011
如何将二进制字符串的各个元素分配给int
(或bool
(数组,以便在转换后数组看起来像1:
int[] binary = {0, 0, 0, 0, 0, 0, 1, 1}
或
bool[] binary = {false, false, false, false, false, false, true, true};
1.使用具有char
到int
(或bool
(类型转换的便利而非琐碎的for
循环
您可以添加一些Linq来将string
表示为数组:
string source = Convert.ToString(number, toBase).PadLeft(length, '0');
int[] binary = source.Select(c => c - '0').ToArray();
bool[] binary = source.Select(c => c == '1').ToArray();
或者你可以直接计算数组:
int[] binary = Enumerable
.Range(1, length)
.Select(i => number / (1 << (length - i)) % 2)
.ToArray();
bool[] binary = Enumerable
.Range(1, length)
.Select(i => number / (1 << (length - i)) % 2 == 1)
.ToArray();
如果存储已创建的字符串,例如
string theBinaryString = Convert.ToString(number, toBase).PadLeft(length, '0');
int[] binary = new int[8];
for(int i = 0; i < 8; i++)
{
binary[i] = int.parse(theBinaryString[i].ToString());
}
循环完成后,您将获得要查找的数组,ToString()
是必需的,因为从字符串中选择就好像它是一个数组一样,返回一个无法解析为int的char。
您可以在不将数字转换为二进制字符串的情况下执行此操作:
var num = 123;
var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray();
这个想法是将数字按顺序右移一个递减的位置,并屏蔽除最低有效位之外的所有位。
演示。
可能是这样;
"1000110101110".ToCharArray().Select(c => c - '0').ToArray()
会给你:
int[13] { 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0 }
int[] intArray = stringNumber.ToCharArray().Select(n => Convert.ToInt32(n)).ToArray();