-3

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

string number = "25274132531129322906392322409257377862778880"

我想得到:

string binresult;

具有价值:

 0000000000000001001000100010001000000000000000100000001011101000000000000000000011110000000000000000110100000000000000100000000000000000000000000000000000000000
4

3 回答 3

1

您实际上可以使用 Dan Byström 对How to convert a gi-normous integer (in string format) to hex format 的回答?(C#),就像评论中建议的 Michael Edenfeld 一样。它会让你从你的大数字字符串变成十六进制。为了您的方便,我将重新发布他的代码:

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;

我不会自称理解他是如何想出这个的,但我已经用一些我知道十六进制值的数字对其进行了测试,它似乎有效。我很想听听他的解释。

现在,您想要二进制的答案,幸运的是,从十六进制转换为二进制是生活中更容易的事情之一。每个十六进制值都直接转换为其 4 位二进制对应值(0x7 = 0111、0xA = 1010 等)。您可以编写一个循环来逐个字符地执行此转换,但是 Guffa 对C# how convert large HEX string to binary的回答提供了这个方便的花花公子 Linq 语句来执行相同的操作:

string binaryString = string.Join(string.Empty,
hex.Select(c => Convert.ToString(Convert.ToInt32(
c.ToString(), 16), 2).PadLeft(4, '0')));

一起运行所有这些给我:

011100010101010100000000000000000000000011001001001001101011111111111111111111111111111111111111110101000100010000000000000000000000111111111111111111111111111111111111111111111919太验值

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

于 2013-02-12T17:32:18.807 回答
0

你可以试试这个:

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();
于 2013-02-12T15:43:56.520 回答
0

System.Convert 可以帮助您处理这样的点点滴滴。见下文。

string decString = "12345";
int integer = Convert.ToInt32(decString);
string binString = Convert.ToString(integer, 2);
于 2013-02-12T15:45:11.157 回答