BigInteger.ToByteArray Methode

Definitie

Overloads

Name Description
ToByteArray()

Converteert een BigInteger waarde naar een bytematrix.

ToByteArray(Boolean, Boolean)

Retourneert de waarde van deze BigInteger als bytematrix met behulp van het kleinste aantal bytes dat mogelijk is. Als de waarde nul is, wordt een matrix van één byte geretourneerd waarvan het element is 0x00.

ToByteArray()

Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs

Converteert een BigInteger waarde naar een bytematrix.

public:
 cli::array <System::Byte> ^ ToByteArray();
public byte[] ToByteArray();
member this.ToByteArray : unit -> byte[]
Public Function ToByteArray () As Byte()

Retouren

Byte[]

De waarde van het huidige BigInteger object dat is geconverteerd naar een matrix van bytes.

Voorbeelden

In het volgende voorbeeld ziet u hoe sommige BigInteger waarden worden weergegeven in bytematrices.

using System;
using System.Numerics;

public class Example
{
   static byte[] bytes;

   public static void Main()
   {
      BigInteger[] numbers = { BigInteger.MinusOne, BigInteger.One,
                               BigInteger.Zero, 120, 128, 255, 1024,
                               Int64.MinValue, Int64.MaxValue,
                               BigInteger.Parse("90123123981293054321") };
      foreach (BigInteger number in numbers)
      {
         bytes = number.ToByteArray();
         Console.Write("{0} ({1}) -> ", number, number.ToString(GetSpecifier()));
         Console.Write("{0} bytes: ", bytes.Length);
         foreach (byte byteValue in bytes)
            Console.Write("{0:X2} ", byteValue);

         Console.WriteLine();
      }
   }

   private static string GetSpecifier()
   {
      return "X" + (bytes.Length * 2).ToString();
   }
}
// The example displays the following output:
//    -1 (FF) -> 1 bytes: FF
//    1 (01) -> 1 bytes: 01
//    0 (00) -> 1 bytes: 00
//    120 (78) -> 1 bytes: 78
//    128 (0080) -> 2 bytes: 80 00
//    255 (00FF) -> 2 bytes: FF 00
//    1024 (0400) -> 2 bytes: 00 04
//    -9223372036854775808 (8000000000000000) -> 8 bytes: 00 00 00 00 00 00 00 80
//    9223372036854775807 (7FFFFFFFFFFFFFFF) -> 8 bytes: FF FF FF FF FF FF FF 7F
//    90123123981293054321 (04E2B5A7C4A975E971) -> 9 bytes: 71 E9 75 A9 C4 A7 B5 E2 04
open System
open System.Numerics

let numbers =
    [| BigInteger.MinusOne
       BigInteger.One
       BigInteger.Zero
       120
       128
       255
       1024
       Int64.MinValue
       Int64.MaxValue
       BigInteger.Parse("90123123981293054321") |]

for number in numbers do
    let bytes = number.ToByteArray()
    printf $"""{number} ({number.ToString("X" + (bytes.Length * 2).ToString())}) -> """
    printf $"{bytes.Length} bytes: "

    for byteValue in bytes do
        printf $"{byteValue:X2} "

    printfn ""

// The example displays the following output:
//    -1 (FF) -> 1 bytes: FF
//    1 (01) -> 1 bytes: 01
//    0 (00) -> 1 bytes: 00
//    120 (78) -> 1 bytes: 78
//    128 (0080) -> 2 bytes: 80 00
//    255 (00FF) -> 2 bytes: FF 00
//    1024 (0400) -> 2 bytes: 00 04
//    -9223372036854775808 (8000000000000000) -> 8 bytes: 00 00 00 00 00 00 00 80
//    9223372036854775807 (7FFFFFFFFFFFFFFF) -> 8 bytes: FF FF FF FF FF FF FF 7F
//    90123123981293054321 (04E2B5A7C4A975E971) -> 9 bytes: 71 E9 75 A9 C4 A7 B5 E2 04
Imports System.Numerics

Module Example
   Dim bytes() As Byte
      
   Public Sub Main()
      Dim numbers() As BigInteger = { BigInteger.MinusOne, BigInteger.One, 
                                      BigInteger.Zero, 120, 128, 255, 1024, 
                                      Int64.MinValue, Int64.MaxValue, 
                                      BigInteger.Parse("90123123981293054321") }
      For Each number As BigInteger In numbers
         bytes = number.ToByteArray()
         Console.Write("{0} ({1}) -> ", number, number.ToString(GetSpecifier()))
         Console.Write("{0} bytes: ", bytes.Length)
         For Each byteValue As Byte In bytes
            Console.Write("{0:X2} ", byteValue)
         Next
         Console.WriteLine()
      Next   
   End Sub
   
   Private Function GetSpecifier() As String
      Return "X" + CStr(bytes.Length * 2)
   End Function
End Module
' The example displays the following output:
'    -1 (FF) -> 1 bytes: FF
'    1 (01) -> 1 bytes: 01
'    0 (00) -> 1 bytes: 00
'    120 (78) -> 1 bytes: 78
'    128 (0080) -> 2 bytes: 80 00
'    255 (00FF) -> 2 bytes: FF 00
'    1024 (0400) -> 2 bytes: 00 04
'    -9223372036854775808 (8000000000000000) -> 8 bytes: 00 00 00 00 00 00 00 80
'    9223372036854775807 (7FFFFFFFFFFFFFFF) -> 8 bytes: FF FF FF FF FF FF FF 7F
'    90123123981293054321 (04E2B5A7C4A975E971) -> 9 bytes: 71 E9 75 A9 C4 A7 B5 E2 04

Opmerkingen

De afzonderlijke bytes in de matrix die door deze methode worden geretourneerd, worden weergegeven in de little-endian-volgorde. Dat wil gezegd, de lagere volgorde bytes van de waarde voorafgaan aan de bytes met een hogere volgorde. De eerste byte van de matrix weerspiegelt de eerste acht bits van de BigInteger waarde, de tweede byte weerspiegelt de volgende acht bits, enzovoort. De waarde 1024 of 0x0400 wordt bijvoorbeeld opgeslagen als de volgende matrix van twee bytes:

Element Bytewaarde
0 0x00
1 0x04

Negatieve waarden worden naar de matrix geschreven met behulp van de complementweergave van twee in de meest compacte vorm. Bijvoorbeeld: -1 wordt weergegeven als één byte waarvan de waarde 0xFF in plaats van een matrix met meerdere elementen, zoals 0xFF, 0xFF of 0xFF, 0xFF, 0xFF. 0xFF

Omdat de complementweergave van twee altijd de hoogste volgorde van de laatste byte in de matrix (de byte op positie Array.Length- 1) als tekenbit interpreteert, retourneert de methode een bytematrix met een extra element waarvan de waarde nul is om positieve waarden die anders kunnen worden geïnterpreteerd als hun teken-bits ingesteld te hebben. De waarde 120 of 0x78 wordt bijvoorbeeld weergegeven als een matrix met één byte: 0x78. 128 of 0x80, wordt echter weergegeven als een matrix met twee bytes: 0x80, 0x00.

U kunt een BigInteger waarde afronden door deze op te slaan in een bytematrix en deze vervolgens te herstellen met behulp van de BigInteger(Byte[]) constructor.

Caution

Als uw code de waarde wijzigt van afzonderlijke bytes in de matrix die door deze methode wordt geretourneerd voordat de waarde wordt hersteld, moet u ervoor zorgen dat u de tekenbit niet onbedoeld wijzigt. Als uw wijzigingen bijvoorbeeld een positieve waarde verhogen zodat de hoogste volgorde in het laatste element van de bytematrix wordt ingesteld, kunt u een nieuwe byte toevoegen waarvan de waarde nul is aan het einde van de matrix.

Van toepassing op

ToByteArray(Boolean, Boolean)

Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs
Bron:
BigInteger.cs

Retourneert de waarde van deze BigInteger als bytematrix met behulp van het kleinste aantal bytes dat mogelijk is. Als de waarde nul is, wordt een matrix van één byte geretourneerd waarvan het element is 0x00.

public byte[] ToByteArray(bool isUnsigned = false, bool isBigEndian = false);
member this.ToByteArray : bool * bool -> byte[]
Public Function ToByteArray (Optional isUnsigned As Boolean = false, Optional isBigEndian As Boolean = false) As Byte()

Parameters

isUnsigned
Boolean

true niet-ondertekende codering te gebruiken; anders, false.

isBigEndian
Boolean

true om de bytes in een big-endian bytevolgorde te schrijven; anders, false.

Retouren

Byte[]

De waarde van het huidige BigInteger object dat is geconverteerd naar een matrix van bytes.

Uitzonderingen

Als isUnsigned dat zo is true en Sign negatief is.

Opmerkingen

De waarde 33022 van het gehele getal kan worden geëxporteerd in vier verschillende matrices:

Properties Result
isUnsigned: false, isBigEndian: false new byte[] { 0xFE, 0x80, 0x00 }
isUnsigned: false, isBigEndian: true new byte[] { 0x00, 0x80, 0xFE }
isUnsigned: true, isBigEndian: false new byte[] { 0xFE, 0x80 }
isUnsigned: true, isBigEndian: true new byte[] { 0x80, 0xFE }

Van toepassing op