如何将整数转换为存储在数组中的二进制
Posted
技术标签:
【中文标题】如何将整数转换为存储在数组中的二进制【英文标题】:How to convert an integer to binary stored in array 【发布时间】:2016-10-14 09:41:35 【问题描述】:我知道如何将整数从十进制转换为固定长度的二进制字符串:
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.使用设施而不是琐碎的for
循环与char
到int
(或bool
)类型转换。
【问题讨论】:
重复? ***.com/questions/1318933/c-sharp-int-to-bytebool[] binary = Convert.ToString(...).Select(c => c == '1').ToArray();
【参考方案1】:
您可以添加一些 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();
【讨论】:
【参考方案2】:如果存储自己创建的字符串,例如
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()
是必需的,因为从字符串中选择就好像它是一个数组返回一个 char,它不能被解析为 int。
【讨论】:
【参考方案3】:不用将数字转换成二进制字符串也可以:
var num = 123;
var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray();
这个想法是按顺序将数字右移一个递减的位置,并屏蔽除最低有效位之外的所有位。
Demo.
【讨论】:
感谢您的回答!那是int
数组对吗?
@Ziezi 是的,这会产生一个int
s 的数组。如果您想要char
s 的数组,请将条件添加到Select
表达式,或将结果添加到'0'
以将int
转换为char
数字。【参考方案4】:
可能是这样的;
"1000110101110".ToCharArray().Select(c => c - '0').ToArray()
会给你:
int[13] 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0
【讨论】:
48
- 幻数,这是一个坏的部分;换成'0'
在阅读您的代码时,很不清楚 48
代表什么。输入'0'
,即c => c - '0'
以使其明显:当前字符减去'0'
虽然我有点明白你在说什么,但由于我们正在编程并且正在使用 chararray 函数,因此我的想法应该很明显,48 是从 c 中减去的整数,a特点。如果您愿意,可以进行编辑。【参考方案5】:
int[] intArray = stringNumber.ToCharArray().Select(n => Convert.ToInt32(n)).ToArray();
【讨论】:
@viveknuna 是的,我修好了。我的坏以上是关于如何将整数转换为存储在数组中的二进制的主要内容,如果未能解决你的问题,请参考以下文章