C# 如何将存储在数组中的整数转换为二进制

C# 如何将存储在数组中的整数转换为二进制,c#,arrays,binary,type-conversion,C#,Arrays,Binary,Type Conversion,我知道如何将整数从十进制转换为固定长度的二进制字符串: int number = 3; int toBase = 2; int length = 8; Convert.ToString(number, toBase).PadLeft(length, '0') var num = 123; var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray(); 输出: 00000011

我知道如何将整数从十进制转换为固定长度的二进制字符串:

int number = 3;
int toBase = 2;
int length = 8;
Convert.ToString(number, toBase).PadLeft(length, '0')
var num = 123;
var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray();
输出:

00000011

如何将该二进制字符串的各个元素分配给
int
(或
bool
)数组,以便在转换后数组看起来像1:



一,。使用工具和不平凡的
进行
循环,并使用
char
int
(或
bool
)类型转换。

例如,如果存储已创建的字符串

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());
}
string theBinaryString=Convert.ToString(数字,toBase).PadLeft(长度,'0');
int[]二进制=新的int[8];
对于(int i=0;i<8;i++)
{
binary[i]=int.parse(二进制字符串[i].ToString());
}

循环完成后,您将拥有要查找的数组,
ToString()
是必需的,因为从字符串中进行选择就像它是一个数组一样,返回一个无法解析为int的字符。

例如,如果您存储了创建的字符串

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());
}
int[] intArray = stringNumber.ToCharArray().Select(n => Convert.ToInt32(n)).ToArray();
string theBinaryString=Convert.ToString(数字,toBase).PadLeft(长度,'0');
int[]二进制=新的int[8];
对于(int i=0;i<8;i++)
{
binary[i]=int.parse(二进制字符串[i].ToString());
}
循环完成后,您将拥有要查找的数组,
ToString()
是必需的,因为从字符串中进行选择就像它是一个数组一样,返回一个无法解析为int的字符。

您可以添加一些Linq以将
字符串
表示为数组:

int[] intArray = stringNumber.ToCharArray().Select(n => Convert.ToInt32(n)).ToArray();
string source = Convert.ToString(number, toBase).PadLeft(length, '0');

或者,您可以直接计算数组:

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(); 
int[]二进制=可枚举
.范围(1,长度)
.选择(i=>number/(1 number/(1您可以添加一些Linq以将
字符串
表示为数组:

string source = Convert.ToString(number, toBase).PadLeft(length, '0');

或者,您可以直接计算数组:

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(); 
int[]二进制=可枚举
.范围(1,长度)
.选择(i=>number/(1个数字/(1可能是这样)

"1000110101110".ToCharArray().Select(c => c - '0').ToArray()
将为您提供:

int[13] { 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0 }
也许是这样

"1000110101110".ToCharArray().Select(c => c - '0').ToArray()
将为您提供:

int[13] { 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0 }

您可以在不将数字转换为二进制字符串的情况下执行此操作:

int number = 3;
int toBase = 2;
int length = 8;
Convert.ToString(number, toBase).PadLeft(length, '0')
var num = 123;
var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray();
其思想是按减少的位置数顺序将数字右移,并屏蔽除最低有效位以外的所有位


无需将数字转换为二进制字符串即可:

int number = 3;
int toBase = 2;
int length = 8;
Convert.ToString(number, toBase).PadLeft(length, '0')
var num = 123;
var bits = Enumerable.Range(0, 8).Select(i => (num >> (7-i)) & 1).ToArray();
其思想是按减少的位置数顺序将数字右移,并屏蔽除最低有效位以外的所有位


duplicate?
bool[]binary=Convert.ToString(…)。选择(c=>c=='1').ToArray();
duplicate?
bool[]binary=Convert.ToString(…)。选择(c=>c=='1')。ToArray()
@viveknuna是的,我修好了。我的bad@viveknuna是的,我把它修好了。我的坏的
48
-一个坏的数字;把
'0'
放在前面。当你读你的代码时,很不清楚
48
代表什么。把
'0'
,也就是
c=>c-'0'
放在前面,让它更清楚:当前字符减去
'0'
w虽然我有点明白你说的话,但我在想,因为我们正在编程,而且正在使用chararray函数。很明显,48是一个从字符c中减去的整数。如果你愿意,你可以进行编辑。
48
-幻数,这是一个不好的密码;在阅读时,将
'0'
放在前面你的代码,很不清楚48
代表什么。把
'0'
,也就是
c=>c-'0'
说得很清楚:当前字符减去
'0'
,虽然我有点明白你的意思,但我的想法是,因为我们正在编程,而且正在使用chararray函数,很明显48 i这是一个从c中减去的整数,一个字符。如果你愿意,你可以进行编辑。谢谢你的回答!这就是
int
数组,对吗?@Ziezi是的,这会生成一个
int
s数组。如果你想要一个
char
s数组,请向
Select
表达式添加一个条件,或者将结果添加到
'0'
以进行转换一个
int
char
的数字。谢谢你的回答!这就是
int
数组,对吗?@Ziezi是的,这会生成一个
int
s的数组。如果你想要一个
char
s的数组,请向
选择
表达式添加一个条件,或者将结果添加到
'0'
以将
int
转换为
char
数字。谢谢你的回答!谢谢你的回答!