BigInteger.ToByteArray Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Överlagringar
| Name | Description |
|---|---|
| ToByteArray() |
Konverterar ett BigInteger värde till en bytematris. |
| ToByteArray(Boolean, Boolean) |
Returnerar värdet för detta BigInteger som en bytematris med minsta möjliga antal byte. Om värdet är noll returnerar en matris med en byte vars element är 0x00. |
ToByteArray()
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
Konverterar ett BigInteger värde till en bytematris.
public:
cli::array <System::Byte> ^ ToByteArray();
public byte[] ToByteArray();
member this.ToByteArray : unit -> byte[]
Public Function ToByteArray () As Byte()
Returer
Värdet för det aktuella BigInteger objektet som konverterats till en matris med byte.
Exempel
I följande exempel visas hur vissa BigInteger värden representeras i bytematriser.
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
Kommentarer
De enskilda byteen i matrisen som returneras med den här metoden visas i lite endiansk ordning. Det vill:s lägre orderbyte för värdet föregår byte med högre ordning. Den första byte av matrisen återspeglar de första åtta bitarna av BigInteger värdet, den andra byte återspeglar de kommande åtta bitarna och så vidare. Till exempel lagras värdet 1024, eller 0x0400, som följande matris med två byte:
| Element | Bytevärde |
|---|---|
| 0 | 0x00 |
| 1 | 0x04 |
Negativa värden skrivs till matrisen med hjälp av tvås komplementrepresentation i så kompakt form som möjligt. Till exempel representeras -1 som en enda byte vars värde är 0xFF i stället för som en matris med flera element, till 0xFFexempel , 0xFF eller 0xFF, 0xFF, 0xFF, 0xFF.
Eftersom tvås komplementrepresentation alltid tolkar den högsta biten av den sista byteen i matrisen (byte vid position Array.Length- 1) som teckenbiten, returnerar metoden en bytematris med ett extra element vars värde är noll för att skilja positiva värden som annars skulle kunna tolkas som att deras teckenbitar har angetts. Till exempel visas värdet 120 eller 0x78 som en matris med en enda byte: 0x78. Men 128, eller 0x80, representeras som en matris med två byte: 0x80, 0x00.
Du kan avrunda ett BigInteger värde genom att lagra det i en bytematris och sedan återställa det med konstruktorn BigInteger(Byte[]) .
Caution
Om koden ändrar värdet för enskilda byte i matrisen som returneras av den här metoden innan värdet återställs, måste du se till att du inte oavsiktligt ändrar teckenbiten. Om dina ändringar till exempel ökar ett positivt värde så att den högsta biten i det sista elementet i bytematrisen anges kan du lägga till en ny byte vars värde är noll i slutet av matrisen.
Gäller för
ToByteArray(Boolean, Boolean)
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
- Källa:
- BigInteger.cs
Returnerar värdet för detta BigInteger som en bytematris med minsta möjliga antal byte. Om värdet är noll returnerar en matris med en byte vars element är 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()
Parametrar
- isUnsigned
- Boolean
trueför att använda osignerad kodning; annars . false
- isBigEndian
- Boolean
trueatt skriva byte i en stor-endian byte ordning; annars . false
Returer
Värdet för det aktuella BigInteger objektet som konverterats till en matris med byte.
Undantag
Om isUnsigned är true och Sign är negativt.
Kommentarer
Heltalsvärdet 33022 kan exporteras i fyra olika matriser:
| Egenskaper | 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 } |