Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从表示为字符串的非常大的整数中获取字节数组_C#_Arrays - Fatal编程技术网

C# 从表示为字符串的非常大的整数中获取字节数组

C# 从表示为字符串的非常大的整数中获取字节数组,c#,arrays,C#,Arrays,我有一个非常大的素数(用于RSA),需要转换为字节数组。但是,该数字当前存储为字符串。我可以将其存储为byte[],但无论如何,数字都是字符串,我必须将其放入字节数组中 现在要明确的是,我已经使用了MSDN上提供的RSA加密和解密示例数据,并且一切都正常,因此我对加密部分很有信心。此外,MSDN提供的示例提供了已转换为字节[]的素数。因此,我很有信心分解是在将数字的字符串表示形式转换为字节[]的过程中进行的 我现在这样做: private static string _publicKeyExpo

我有一个非常大的素数(用于RSA),需要转换为字节数组。但是,该数字当前存储为字符串。我可以将其存储为byte[],但无论如何,数字都是字符串,我必须将其放入字节数组中

现在要明确的是,我已经使用了MSDN上提供的RSA加密和解密示例数据,并且一切都正常,因此我对加密部分很有信心。此外,MSDN提供的示例提供了已转换为字节[]的素数。因此,我很有信心分解是在将数字的字符串表示形式转换为字节[]的过程中进行的

我现在这样做:

private static string _publicKeyExponent = "12345...310 digits......9876";
private static string _publicKeyModulus = "654782....620 digits.....4576";

_rsaPublicKey.Exponent = CoreHelpers.GetBytes(_publicKeyExponent);
这是我的GetBytes方法,我怀疑它是导致问题的原因,因为它获取的是字符串的字节,而不是数字

    public static byte[] GetBytes(string str)
    {
        byte[] bytes = new byte[str.Length * sizeof(char)];
        System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
        return bytes;
    }
现在,如果我已经确定了问题修复应该是直接进行的否?对我来说,是和否。我不知道在c#中有哪种强类型可以将这样大小的数字解析为。我能想到的最好的办法是将字符串分成更小的块,比如说10个字符,然后很容易解析为INT32,然后获取其中的字节。将它添加到某个主字节数组中,然后再次执行。

您可以使用该结构。
它包含许多
Parse
静态方法和
ToByteArray
方法。
示例代码:

public static byte[] GetBytes(string str)
{
    BigInteger number;
    return BigInteger.TryParse(str, out number) ? number.ToByteArray() : null;
}

为什么不使用struct呢?它包含
Parse
ToByteArray
方法。问题是您正在将数字的字符代码复制到字节数组中,而不是数字的数值。您应该指定所需的输出格式(endianness等)。@Dmitry PERFECT…就像我在OP中所说的。我不知道哪种类型,但现在多亏了您,我知道了。如果你能回答我,我会欣然接受。