Compartilhar via


Marshal.ReadByte Método

Definição

Lê um único byte da memória não gerenciada. Há suporte para leitura de locais de memória não assinados.

Sobrecargas

ReadByte(IntPtr, Int32)

Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.

ReadByte(Object, Int32)
Obsoleto.

Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.

ReadByte(IntPtr)

Lê um único byte da memória não gerenciada.

ReadByte(IntPtr, Int32)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.

public:
 static System::Byte ReadByte(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte (IntPtr ptr, int ofs);
public static byte ReadByte (IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint * int -> byte
static member ReadByte : nativeint * int -> byte
Public Shared Function ReadByte (ptr As IntPtr, ofs As Integer) As Byte

Parâmetros

ptr
IntPtr

nativeint

O endereço base na memória não gerenciada da qual ler.

ofs
Int32

Um deslocamento de bytes adicional, que é adicionado ao parâmetro ptr antes da leitura.

Retornos

A leitura de bytes da memória não gerenciada no deslocamento fornecido.

Atributos

Exceções

O endereço base (ptr) mais o byte de deslocamento (ofs) produz um endereço nulo ou inválido.

Exemplos

O exemplo a seguir demonstra como ler e gravar em uma matriz não gerenciada usando os métodos ReadByte e WriteByte.

static void ReadWriteByte()
{
    // Allocate unmanaged memory. 
    int elementSize = 1;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteByte(unmanagedArray, i * elementSize, ((Byte)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadByte(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteByte()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 1
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteByte(unmanagedArray, i * elementSize, CType(i + 1, Byte))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadByte(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

O exemplo a seguir demonstra como usar o método ReadByte para ler o valor de um caractere não gerenciado.


using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged byte.
    const char * myString = "bB";

    // Read the second character of the c string as a managed byte.
        Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString, 1);

    // Display the byte to the console.
    Console::WriteLine(myManagedByte);
}

Comentários

ReadByte habilita a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória não assinados.

Confira também

Aplica-se a

ReadByte(Object, Int32)

Origem:
Marshal.CoreCLR.cs
Origem:
Marshal.CoreCLR.cs
Origem:
Marshal.CoreCLR.cs

Cuidado

ReadByte(Object, Int32) may be unavailable in future releases.

Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.

public:
 static System::Byte ReadByte(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static byte ReadByte (object ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
public static byte ReadByte (object ptr, int ofs);
public static byte ReadByte (object ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte (object ptr, int ofs);
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
static member ReadByte : obj * int -> byte
static member ReadByte : obj * int -> byte
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
Public Shared Function ReadByte (ptr As Object, ofs As Integer) As Byte

Parâmetros

ptr
Object

O endereço base na memória não gerenciada do objeto de origem.

ofs
Int32

Um deslocamento de bytes adicional, que é adicionado ao parâmetro ptr antes da leitura.

Retornos

A leitura de bytes da memória não gerenciada no deslocamento fornecido.

Atributos

Exceções

O endereço base (ptr) mais o byte de deslocamento (ofs) produz um endereço nulo ou inválido.

ptr é um objeto ArrayWithOffset. Esse método não aceita parâmetros de ArrayWithOffset.

Comentários

ReadByte habilita a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória não assinados.

Confira também

Aplica-se a

ReadByte(IntPtr)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Lê um único byte da memória não gerenciada.

public:
 static System::Byte ReadByte(IntPtr ptr);
[System.Security.SecurityCritical]
public static byte ReadByte (IntPtr ptr);
public static byte ReadByte (IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint -> byte
static member ReadByte : nativeint -> byte
Public Shared Function ReadByte (ptr As IntPtr) As Byte

Parâmetros

ptr
IntPtr

nativeint

O endereço na memória não gerenciada da qual ler.

Retornos

O byte lido da memória não gerenciada.

Atributos

Exceções

ptr não é um formato reconhecido.

-ou-

ptr é null.

-ou-

ptr é inválido.

Exemplos

O exemplo a seguir cria um bloco de memória não gerenciada, grava um byte na memória não gerenciada, lê o byte de volta da memória não gerenciada e descarta a memória não gerenciada.

using System;
using System.Runtime.InteropServices;

 class Example
 {
     static void Main(string[] args)
     {
          // Allocate 1 byte of unmanaged memory.
          IntPtr hGlobal = Marshal.AllocHGlobal(1);

          // Create a new byte.
          byte b = 1;
          Console.WriteLine("Byte written to unmanaged memory: " + b);

          // Write the byte to unmanaged memory.
          Marshal.WriteByte(hGlobal, b);

          // Read byte from unmanaged memory.
          byte c = Marshal.ReadByte(hGlobal);
          Console.WriteLine("Byte read from unmanaged memory: " + c);

          // Free the unmanaged memory.
          Marshal.FreeHGlobal(hGlobal);
          Console.WriteLine("Unmanaged memory was disposed.");
     }
}
Imports System.Runtime.InteropServices

Module Example
    Sub Main()
         ' Allocate 1 byte of unmanaged memory.
         Dim hGlobal As IntPtr = Marshal.AllocHGlobal(1)
         
         ' Create a new byte.
         Dim b As Byte = 1
         
         Console.WriteLine("Byte written to unmanaged memory: {0}", b)
         
         ' Write the byte to unmanaged memory.
         Marshal.WriteByte(hGlobal, b)
         
         ' Read byte from unmanaged memory.
         Dim c As Byte = Marshal.ReadByte(hGlobal)
         Console.WriteLine("Byte read from unmanaged memory: {0}", c)
         
         ' Free the unmanaged memory.
         Marshal.FreeHGlobal(hGlobal)
         Console.WriteLine("Unmanaged memory was disposed.")
    End Sub
End Module

O exemplo a seguir demonstra como usar o método ReadByte para ler o valor de um caractere não gerenciado.


using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged byte.
    const char * myString = "b";

    // Read the c string as a managed byte.
        Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString);

    // Display the byte to the console.
    Console::WriteLine(myManagedByte);
}

Comentários

ReadByte tem um deslocamento implícito de 0. Esse método permite a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória não assinados.

Confira também

Aplica-se a