BigInteger.ToByteArray Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
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
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 } |