Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

BigInteger.ToByteArray (Método)

Convierte un valor BigInteger en una matriz de bytes.

Espacio de nombres:  System.Numerics
Ensamblado:  System.Numerics (en System.Numerics.dll)

public byte[] ToByteArray()

Valor devuelto

Tipo: System.Byte[]
Valor del objeto BigInteger actual convertido en una matriz de bytes.

Los bytes individuales en la matriz que devuelve este método aparecen en orden little-endian. Es decir, los bytes del orden más bajo del valor preceden a los bytes del orden más alto. El primer byte de la matriz refleja los primeros ocho bits del valor BigInteger, el segundo byte refleja los siguientes ocho bits y así sucesivamente. Por ejemplo, el valor 1024 o 0x0400, está almacenado como la siguiente matriz de dos bytes:

Elemento

Valor de byte

0

0x00

1

0x04

Los valores negativos se escriben en la matriz utilizando dos representación del complemento en el formulario más compacto posible. Por ejemplo, -1 se representan como un byte único cuyo valor es 0xFF en lugar de como una matriz con varios elementos, como 0xFF, 0xFF o 0xFF, 0xFF, 0xFF, 0xFF.

Dado que la representación complementaria de dos siempre interpreta el bit de orden superior del último byte en la matriz (el byte en la posición Array.Length- 1) como el bit de signo, el método devuelve una matriz de bytes con un elemento adicional cuyo valor es cero para eliminar la ambigüedad de valores positivos que de lo contrario podrían interpretarse como que tienen sus bits de signo establecidos. Por ejemplo, el valor 120 o 0x78 se representa como una matriz de un solo byte: 0x78. Sin embargo, 128 o 0x80, se representa como una matriz de dos bytes: 0x80, 0x00.

Puede aplicar un valor BigInteger de ida y vuelta almacenándolo en una matriz de bytes y después restaurándolo utilizando el constructor BigInteger(Byte[]).

Nota de precauciónPrecaución

Si su código modifica el valor de bytes individuales en la matriz devuelta por este método antes de restaurar el valor, debe asegurarse de que no cambia el bit de signo involuntariamente. Por ejemplo, si sus modificaciones aumentan un valor positivo para que el bit de orden superior del último elemento de la matriz de bytes se establece, puede agregar un nuevo byte cuyo valor sea cero al final de la matriz.

En el siguiente ejemplo se muestra cómo algunos valores BigInteger se representan en matrices de bytes.


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


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Compatible con: 4

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft