Редагувати

Поділитися через


Buffer.GetByte(Array, Int32) Method

Definition

Retrieves the byte at the specified location in the specified array.

public:
 static System::Byte GetByte(Array ^ array, int index);
public static byte GetByte (Array array, int index);
static member GetByte : Array * int -> byte
Public Shared Function GetByte (array As Array, index As Integer) As Byte

Parameters

array
Array

An array.

index
Int32

A location in the array.

Returns

The byte at the specified location in the array.

Exceptions

array is not a primitive.

array is null.

index is negative or greater than the length of array.

array is larger than 2 gigabytes (GB).

Examples

The following code example displays the byte values at specified locations within arrays using the GetByte method.

// Example of the Buffer::GetByte method.
using namespace System;
#define formatter "{0,10}{1,10}{2,9} {3}"

// Display the array contents in hexadecimal.
void DisplayArray( Array^ arr, String^ name )
{
   
   // Get the array element width; format the formatting string.
   int elemWidth = Buffer::ByteLength( arr ) / arr->Length;
   String^ format = String::Format( " {{0:X{0}}}", 2 * elemWidth );
   
   // Display the array elements from right to left.
   Console::Write( "{0,5}:", name );
   for ( int loopX = arr->Length - 1; loopX >= 0; loopX-- )
      Console::Write( format, arr->GetValue( loopX ) );
   Console::WriteLine();
}

void ArrayInfo( Array^ arr, String^ name, int index )
{
   unsigned char value = Buffer::GetByte( arr, index );
   
   // Display the array name, index, and byte to be viewed.
   Console::WriteLine( formatter, name, index, value, String::Format( "0x{0:X2}", value ) );
}

int main()
{
   
   // These are the arrays to be viewed with GetByte.
   array<__int64>^longs = {333333333333333333,666666666666666666,999999999999999999};
   array<int>^ints = {111111111,222222222,333333333,444444444,555555555};
   Console::WriteLine( "This example of the "
   "Buffer::GetByte( Array*, int ) \n"
   "method generates the following output.\n"
   "Note: The arrays are displayed from right to left.\n" );
   Console::WriteLine( "  Values of arrays:\n" );
   
   // Display the values of the arrays.
   DisplayArray( longs, "longs" );
   DisplayArray( ints, "ints" );
   Console::WriteLine();
   Console::WriteLine( formatter, "Array", "index", "value", "" );
   Console::WriteLine( formatter, "-----", "-----", "-----", "----" );
   
   // Display the Length and ByteLength for each array.
   ArrayInfo( ints, "ints", 0 );
   ArrayInfo( ints, "ints", 7 );
   ArrayInfo( ints, "ints", 10 );
   ArrayInfo( ints, "ints", 17 );
   ArrayInfo( longs, "longs", 0 );
   ArrayInfo( longs, "longs", 6 );
   ArrayInfo( longs, "longs", 10 );
   ArrayInfo( longs, "longs", 17 );
   ArrayInfo( longs, "longs", 21 );
}

/*
This example of the Buffer::GetByte( Array*, int )
method generates the following output.
Note: The arrays are displayed from right to left.

  Values of arrays:

longs: 0DE0B6B3A763FFFF 094079CD1A42AAAA 04A03CE68D215555
 ints: 211D1AE3 1A7DAF1C 13DE4355 0D3ED78E 069F6BC7

     Array     index    value
     -----     -----    ----- ----
      ints         0      199 0xC7
      ints         7       13 0x0D
      ints        10      222 0xDE
      ints        17       26 0x1A
     longs         0       85 0x55
     longs         6      160 0xA0
     longs        10       66 0x42
     longs        17      255 0xFF
     longs        21      182 0xB6
*/
// Example of the Buffer.GetByte method.
using System;

class GetByteDemo
{
    const string formatter = "{0,10}{1,10}{2,9} {3}";

    // Display the array contents in hexadecimal.
    public static void DisplayArray( Array arr, string name )
    {
        // Get the array element width; format the formatting string.
        int elemWidth = Buffer.ByteLength( arr ) / arr.Length;
        string format = String.Format( " {{0:X{0}}}", 2 * elemWidth );

        // Display the array elements from right to left.
        Console.Write( "{0,5}:", name );
        for( int loopX = arr.Length - 1; loopX >= 0; loopX-- )
            Console.Write( format, arr.GetValue( loopX ) );
        Console.WriteLine( );
    }

    public static void ArrayInfo( Array arr, string name, int index )
    {
        byte value = Buffer.GetByte( arr, index );

        // Display the array name, index, and byte to be viewed.
        Console.WriteLine( formatter, name, index, value,
            String.Format( "0x{0:X2}", value ) );
    }

    public static void Main( )
    {
        // These are the arrays to be viewed with GetByte.
        long[ ] longs =
            { 333333333333333333, 666666666666666666, 999999999999999999 };
        int[ ]  ints  =
            { 111111111, 222222222, 333333333, 444444444, 555555555 };

        Console.WriteLine( "This example of the " +
            "Buffer.GetByte( Array, int ) \n" +
            "method generates the following output.\n" +
            "Note: The arrays are displayed from right to left.\n" );
        Console.WriteLine( "  Values of arrays:\n" );

        // Display the values of the arrays.
        DisplayArray( longs, "longs" );
        DisplayArray( ints, "ints" );
        Console.WriteLine( );

        Console.WriteLine( formatter, "Array", "index", "value", "" );
        Console.WriteLine( formatter, "-----", "-----", "-----",
            "----" );

        // Display the Length and ByteLength for each array.
        ArrayInfo( ints, "ints", 0 );
        ArrayInfo( ints, "ints", 7 );
        ArrayInfo( ints, "ints", 10 );
        ArrayInfo( ints, "ints", 17 );
        ArrayInfo( longs, "longs", 0 );
        ArrayInfo( longs, "longs", 6 );
        ArrayInfo( longs, "longs", 10 );
        ArrayInfo( longs, "longs", 17 );
        ArrayInfo( longs, "longs", 21 );
    }
}

/*
This example of the Buffer.GetByte( Array, int )
method generates the following output.
Note: The arrays are displayed from right to left.

  Values of arrays:

longs: 0DE0B6B3A763FFFF 094079CD1A42AAAA 04A03CE68D215555
 ints: 211D1AE3 1A7DAF1C 13DE4355 0D3ED78E 069F6BC7

     Array     index    value
     -----     -----    ----- ----
      ints         0      199 0xC7
      ints         7       13 0x0D
      ints        10      222 0xDE
      ints        17       26 0x1A
     longs         0       85 0x55
     longs         6      160 0xA0
     longs        10       66 0x42
     longs        17      255 0xFF
     longs        21      182 0xB6
*/
open System

let print obj1 obj2 obj3 obj4 = printfn $"{obj1,10}{obj2,10}{obj3,9} {obj4}"

// Display the array contents in hexadecimal.
let inline displayArray (arr: ^a []) name =
    // Get the array element width; format the formatting string.
    let elemWidth = Buffer.ByteLength arr / arr.Length

    // Display the array elements from right to left.
    printf $"{name,5}:"
    for i = arr.Length - 1 downto 0 do
        printf " %0*X" (2 * elemWidth) arr[i]
    printfn ""

let arrayInfo (arr: Array) name index =
    let value = Buffer.GetByte(arr, index)

    // Display the array name, index, and byte to be viewed.
    print name index value $"0x{value:X2}"

// These are the arrays to be viewed with GetByte.
let longs =
    [| 333333333333333333L; 666666666666666666L; 999999999999999999L |]
let ints =
    [| 111111111; 222222222; 333333333; 444444444; 555555555 |]

printfn "This example of the Buffer.GetByte(Array, int) \nmethod generates the following output.\nNote: The arrays are displayed from right to left.\n"
printfn "  Values of arrays:\n"

// Display the values of the arrays.
displayArray longs "longs"
displayArray ints "ints"
printfn ""

print "Array" "index" "value" ""
print "-----" "-----" "-----" "----"

// Display the Length and ByteLength for each array.
arrayInfo ints "ints" 0
arrayInfo ints "ints" 7
arrayInfo ints "ints" 10
arrayInfo ints "ints" 17
arrayInfo longs "longs" 0
arrayInfo longs "longs" 6
arrayInfo longs "longs" 10
arrayInfo longs "longs" 17
arrayInfo longs "longs" 21


// This example of the Buffer.GetByte( Array, int )
// method generates the following output.
// Note: The arrays are displayed from right to left.
//
//   Values of arrays:
//
// longs: 0DE0B6B3A763FFFF 094079CD1A42AAAA 04A03CE68D215555
//  ints: 211D1AE3 1A7DAF1C 13DE4355 0D3ED78E 069F6BC7
//
//      Array     index    value
//      -----     -----    ----- ----
//       ints         0      199 0xC7
//       ints         7       13 0x0D
//       ints        10      222 0xDE
//       ints        17       26 0x1A
//      longs         0       85 0x55
//      longs         6      160 0xA0
//      longs        10       66 0x42
//      longs        17      255 0xFF
//      longs        21      182 0xB6
' Example of the Buffer.GetByte method.
Module GetByteDemo

    Const formatter As String = "{0,10}{1,10}{2,9} {3}"

    ' Display the array contents in hexadecimal.
    Sub DisplayArray( arr As Array, name As String )

        ' Get the array element width; format the formatting string.
        Dim loopX     As Integer
        Dim elemWidth As Integer = _
            Buffer.ByteLength( arr ) / arr.Length
        Dim format    As String = _
            String.Format( " {{0:X{0}}}", 2 * elemWidth )

        ' Display the array elements from right to left.
        Console.Write( "{0,7}:", name )
        For loopX = arr.Length - 1 to 0 Step -1
            Console.Write( format, arr( loopX ) )
        Next loopX
        Console.WriteLine( )
    End Sub

    Sub ArrayInfo( arr As Array, name As String, index As Integer )
        
        Dim value As Byte = Buffer.GetByte( arr, index )

        ' Display the array name, index, and byte to be viewed.
        Console.WriteLine( formatter, name, index, value, _
            String.Format( "&H{0:X2}", value ) )
    End Sub

    Sub Main( )

        ' These are the arrays to be viewed with GetByte.
        Dim longs( ) As Long  = _
            { 333333333333333333, 666666666666666666, 999999999999999999 }
        Dim ints( )  As Integer = _
            { 111111111, 222222222, 333333333, 444444444, 555555555 }

        Console.WriteLine( "This example of the " & _
            "Buffer.GetByte( Array, Integer ) " & vbCrLf & _
            "method generates the following output." & vbCrLf & _
            "Note: The arrays are displayed from right to left." )
        Console.WriteLine( vbCrLf & "  Values of arrays:" & vbCrLf )

        ' Display the values of the arrays.
        DisplayArray( longs, "longs" )
        DisplayArray( ints, "ints" )
        Console.WriteLine( )

        Console.WriteLine( formatter, "Array", "index", _
            "value", "" )
        Console.WriteLine( formatter, "-----", "-----", _
            "-----", "----" )

        ' Display the Length and ByteLength for each array.
        ArrayInfo( ints, "ints", 0 )
        ArrayInfo( ints, "ints", 7 )
        ArrayInfo( ints, "ints", 10 )
        ArrayInfo( ints, "ints", 17 )
        ArrayInfo( longs, "longs", 0 )
        ArrayInfo( longs, "longs", 6 )
        ArrayInfo( longs, "longs", 10 )
        ArrayInfo( longs, "longs", 17 )
        ArrayInfo( longs, "longs", 21 )
    End Sub 
End Module 

' This example of the Buffer.GetByte( Array, Integer )
' method generates the following output.
' Note: The arrays are displayed from right to left.
' 
'   Values of arrays:
' 
'   longs: 0DE0B6B3A763FFFF 094079CD1A42AAAA 04A03CE68D215555
'    ints: 211D1AE3 1A7DAF1C 13DE4355 0D3ED78E 069F6BC7
' 
'      Array     index    value
'      -----     -----    ----- ----
'       ints         0      199 &HC7
'       ints         7       13 &H0D
'       ints        10      222 &HDE
'       ints        17       26 &H1A
'      longs         0       85 &H55
'      longs         6      160 &HA0
'      longs        10       66 &H42
'      longs        17      255 &HFF
'      longs        21      182 &HB6

Remarks

The GetByte method gets a particular byte out of the array. The array must be an array of primitives.

Applies to