Tipo de dados byte (Visual Basic)

Armazena inteiros de 8 bits (1 bytes) sem sinal que variam em valor de 0 a 255.

Comentários

Use o tipo de dados Byte para conter dados binários.

O valor padrão de Byte é 0.

Atribuições literais

Você pode declarar e inicializar uma variável Byte atribuindo a ela um literal decimal, hexadecimal, octal ou (a partir do Visual Basic 2017) binário. Se o literal integral estiver fora do intervalo de Byte (ou seja, se for menor que Byte.MinValue ou maior que Byte.MaxValue), ocorrerá um erro de compilação.

No exemplo a seguir, inteiros iguais a 201 representados como literais decimais, hexadecimais e binários são implicitamente convertidos de valores Integer para byte.

Dim byteValue1 As Byte = 201
Console.WriteLine(byteValue1)

Dim byteValue2 As Byte = &H00C9
Console.WriteLine(byteValue2)

Dim byteValue3 As Byte = &B1100_1001
Console.WriteLine(byteValue3)
' The example displays the following output:
'          201
'          201
'          201

Observação

Use o prefixo &h ou &H para indicar um literal hexadecimal, &b ou &B para indicar um literal binário e &o ou &O para indicar um literal octal. Literais decimais não têm nenhum prefixo.

A partir do Visual Basic 2017, você também pode usar o caractere de sublinhado, _, como separador de dígitos para melhorar a legibilidade, como no exemplo a seguir.

Dim byteValue3 As Byte = &B1100_1001
Console.WriteLine(byteValue3)
' The example displays the following output:
'          201

A partir do Visual Basic 15.5, você também pode usar o caractere de sublinhado (_) como separador à esquerda entre o prefixo e os dígitos hexadecimais, binários ou octais. Por exemplo:

Dim number As Byte = &H_6A

Para usar o caractere de sublinhado como separador à esquerda, você deve adicionar o seguinte elemento ao arquivo de projeto do Visual Basic (*.vbproj):

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Para obter mais informações, consulte Selecionar a versão da linguagem Visual Basic.

Dicas de programação

  • Números Negativos. Como Byte é um tipo sem sinal, não pode representar um número negativo. Se você usar o operador unário menos (-) em uma expressão avaliada como tipo Byte, o Visual Basic primeiro converterá a expressão em Short.

  • Conversões de formato. Quando o Visual Basic lê ou grava arquivos, ou quando chama DLLs, métodos e propriedades, ele pode fazer a conversão automática entre formatos de dados. Os dados binários armazenados em variáveis Byte e matrizes são preservados durante essas conversões de formato. Você não deve usar uma variável String para dados binários, pois o conteúdo pode ser corrompido durante a conversão entre formatos ANSI e Unicode.

  • Ampliação. O tipo de dados Byte é ampliado para Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single ou Double. Isso significa que você pode converter Byte em qualquer um desses tipos sem a ocorrência de um erro System.OverflowException.

  • Caracteres de tipo. Byte não tem nenhum caractere de tipo literal nem caractere de identificação de tipo.

  • Tipo do Framework. O tipo correspondente no .NET Framework é a estrutura System.Byte.

Exemplo

No exemplo a seguir, b é uma variável Byte. As instruções demonstram o intervalo da variável e a aplicação de operadores de turno de bit para ela.

' The valid range of a Byte variable is 0 through 255.
Dim b As Byte
b = 30
' The following statement causes an error because the value is too large.
'b = 256
' The following statement causes an error because the value is negative.
'b = -5
' The following statement sets b to 6.
b = CByte(5.7)

' The following statements apply bit-shift operators to b.
' The initial value of b is 6.
Console.WriteLine(b)
' Bit shift to the right divides the number in half. In this 
' example, binary 110 becomes 11.
b >>= 1
' The following statement displays 3.
Console.WriteLine(b)
' Now shift back to the original position, and then one more bit
' to the left. Each shift to the left doubles the value. In this
' example, binary 11 becomes 1100.
b <<= 2
' The following statement displays 12.
Console.WriteLine(b)

Confira também