C# 如何将存储在字符串中的数字转换为二进制格式?

C# 如何将存储在字符串中的数字转换为二进制格式?,c#,C#,我有一个我存储在字符串中的数字,因为它是一个长的数字,我想把它转换成二进制格式 string number = "25274132531129322906392322409257377862778880" 我想得到: string binresult; 有价值的: 000000000000000100100010001000100000000000000010000000101110100000000000000000001111000000000000000011010000000000

我有一个我存储在字符串中的数字,因为它是一个长的数字,我想把它转换成二进制格式

string number = "25274132531129322906392322409257377862778880"
我想得到:

string binresult;
有价值的:

 0000000000000001001000100010001000000000000000100000001011101000000000000000000011110000000000000000110100000000000000100000000000000000000000000000000000000000
您可以尝试以下方法:

string number = "25274132531129322906392322409257377862778880";
char[] strArr = number.ToCharArray();
StringBuilder sb = new StringBuilder();
foreach (char chr in strArr)
{
    sb.Append(Convert.ToString((int)Char.GetNumericValue(chr), 2));
}
string binresult = sb.ToString();

转换可以帮助您处理这样的零碎信息。见下文

string decString = "12345";
int integer = Convert.ToInt32(decString);
string binString = Convert.ToString(integer, 2);

事实上,你可以使用丹·比斯特罗姆的答案,就像迈克尔·伊登菲尔德在评论中所建议的那样。它将使您从大数字字符串转换为十六进制。为了您的方便,我将重新发布他的代码:

var s = "25274132531129322906392322409257377862778880";
var result = new List<byte>();
result.Add(0);
foreach (char c in s)
{
    int val = (int)(c - '0');
    for (int i = 0 ; i < result.Count ; i++)
    {
        int digit = result[i] * 10 + val;
        result[i] = (byte)(digit & 0x0F);
        val = digit >> 4;
    }
    if (val != 0)
        result.Add((byte)val);
}

var hex = "";
foreach (byte b in result)
    hex = "0123456789ABCDEF"[b] + hex;
把所有这些放在一起让我:

0111001010101010010000000000110011001001001000101010000000000000010111001110000000000001000101000000000011001111111111111111111111111111100010


谢谢你的电话号码。我不知道你打算如何验证它,但如果Dan的十六进制翻译是正确的,那么二进制字符串肯定是正确的。

BigInteger转换为BaseAlway的家庭作业是证明你可以用谷歌搜索东西,而不是让互联网上的人帮你做。我们都做了这个任务,它将教你微软的MSDN网站的价值。请认真对待你的课程,我想与那些能够解决问题的人合作,而不是那些寻求我帮助的人。这个关于将大数字转换为十六进制的问题应该适合你,只需要一些小的调整就可以生成二进制。我检查了大约300页,没有找到解决方案,顺便说一句,BigInteger做不到,而且我没有.NET4.5。Michael Edenfield提供的页面与二进制无关。@Sparksis我认为重点是学习如何做,而不是查找如何做。我做这个作业时没有互联网当然,那是在1987年左右,整数没有那么大。int不能保存25274132531129322906392322409257377862778880@tjohn-只需将int替换为int64,很明显,您尝试加载的二进制值是64位整数。该值中唯一重要的值实际上是000000000000000 100100010000000000000100000000000101110100000000000000000000000001111000000000000000000001010000000000001000000000000000000000000000000000000000000000000000000000000000000000000如果前导的0不是000000000000000,则数字不能是int32或INT64我知道我的数字是100%正确的,更重要的是,我同时找到了解决办法。如果这给了你在下面键入的二进制答案,那么它的计算就不正确。顺便说一句,谢谢你的尝试。出于好奇,你最终实现了自己的字符串数学吗?我自己支持大数已经有一段时间了。我这样做是因为我不想使用微软的,因为它依赖于.NET版本。我从一开始就写了所有东西,以便能够在任何.NET版本中使用它,现在还想添加到不同格式的转换。
string binaryString = string.Join(string.Empty,
hex.Select(c => Convert.ToString(Convert.ToInt32(
c.ToString(), 16), 2).PadLeft(4, '0')));