mardi 21 février 2017

Byte to value error

So in c#, I have needed a random below given number generator and I found one on StackOverFlow. But near the end, it converts the byte array into a BigInteger. I tried doing the same, though I am using the Deveel-Math lib as it allows me to us BigDeciamals. But I have tried to the array change into a value, and that into a String but I keep getting a "Could not find any recognizable digits." error and as of now I am stumped.

public static BigInteger RandomIntegerBelow1(BigInteger N)
    {
        byte[] bytes = N.ToByteArray();
        BigInteger R;
        Random random = new Random();

        do
        {
            random.NextBytes(bytes);
            bytes[bytes.Length - 1] &= (byte)0x7F; //force sign bit to positive

            R = BigInteger.Parse(BytesToStringConverted(bytes)) ;
           //the Param needs a String value, exp: BigInteger.Parse("100")
        } while (R >= N);

        return R;
    }
    static string BytesToStringConverted(byte[] bytes)
    {
        using (var stream = new MemoryStream(bytes))
        {
            using (var streamReader = new StreamReader(stream))
            {
                return streamReader.ReadToEnd();
            }
        }
    }

Deveel-Math




Aucun commentaire:

Enregistrer un commentaire