Format-Hex

Exibe um arquivo ou outra entrada como hexadecimal.

Syntax

Format-Hex
      [-Path] <string[]>
      [-Count <long>]
      [-Offset <long>]
      [<CommonParameters>]
Format-Hex
      -LiteralPath <string[]>
      [-Count <long>]
      [-Offset <long>]
      [<CommonParameters>]
Format-Hex
      -InputObject <psobject>
      [-Encoding <Encoding>]
      [-Count <long>]
      [-Offset <long>]
      [-Raw]
      [<CommonParameters>]

Description

O Format-Hex cmdlet exibe um arquivo ou outra entrada como valores hexadecimal. Para determinar o deslocamento de um caractere da saída, adicione o número à esquerda da linha ao número na parte superior da coluna para esse caractere.

O Format-Hex cmdlet pode ajudá-lo a determinar o tipo de arquivo de um arquivo corrompido ou um arquivo que pode não ter uma extensão de nome de arquivo. Você pode executar esse cmdlet e ler a saída hexadecimal para obter informações do arquivo.

Ao usar Format-Hex em um arquivo, o cmdlet ignora caracteres de nova linha e retorna todo o conteúdo de um arquivo em uma cadeia de caracteres com os caracteres newline preservados.

Exemplos

Exemplo 1: Obter a representação hexadecimal de uma cadeia de caracteres

Esse comando retorna os valores hexadecimal de uma cadeia de caracteres.

'Hello World' | Format-Hex

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   48 65 6C 6C 6F 20 57 6F 72 6C 64                 Hello World

A cadeia de caracteres Olá, Mundo é enviada pelo pipeline para o Format-Hex cmdlet. A saída hexadecimal mostra Format-Hex os valores de cada caractere na cadeia de caracteres.

Exemplo 2: localizar um tipo de arquivo da saída hexadecimal

Este exemplo usa a saída hexadecimal para determinar o tipo de arquivo. O cmdlet exibe o caminho completo do arquivo e os valores hexadecimal.

Para testar o comando a seguir, faça uma cópia de um arquivo PDF existente no computador local e renomeie o arquivo copiado para File.t7f.

Format-Hex -Path .\File.t7f

Path: C:\Test\File.t7f

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D  %PDF-1.5..%????.
00000010   0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70  .1 0 obj..<</Typ
00000020   65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20  e/Catalog/Pages

O Format-Hex cmdlet usa o parâmetro Path para especificar um nome de arquivo no diretório atual, File.t7f. A extensão de arquivo .t7f é incomum, mas a saída hexadecimal %PDF mostra que é um arquivo PDF.

Parâmetros

-Count

Isso representa o número de bytes a serem incluídos na saída hexadecima.

Esse parâmetro foi introduzido no PowerShell 6.2.

Type:Int64
Position:Named
Default value:Int64.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Especifica a codificação da saída. Isso só se aplica à [string] entrada. O parâmetro não tem efeito sobre tipos numéricos. O valor padrão é utf8NoBOM.

Os valores aceitáveis para esse parâmetro são os seguintes:

  • ascii: usa a codificação para o conjunto de caracteres ASCII (7 bits).
  • bigendianunicode: codifica no formato UTF-16 usando a ordem de bytes big-endian.
  • oem: usa a codificação padrão para ms-DOS e programas de console.
  • unicode: codifica no formato UTF-16 usando a ordem de byte little-endian.
  • utf7: codifica no formato UTF-7.
  • utf8: codifica no formato UTF-8.
  • utf8BOM: codifica no formato UTF-8 com Marca de Ordem de Byte (BOM)
  • utf8NoBOM: codifica no formato UTF-8 sem Marca de Ordem de Byte (BOM)
  • utf32: codifica no formato UTF-32.

A partir do PowerShell 6.2, o parâmetro de codificação também permite IDs numéricas de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Usado para entrada de pipeline. A entrada de pipeline dá suporte apenas a determinados tipos escalares e [system.io.fileinfo] instâncias para tubulação de Get-ChildItem.

Os tipos escalares com suporte são:

  • [string], [char]
  • [byte], [sbyte]
  • [int16], [uint16], [short], [ushort]
  • [int], [uint], [int32], [uint32],
  • [long], [ulong], [int64], [uint64]
  • [single], [float], [double]
Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Especifica o caminho completo para um arquivo. O valor de LiteralPath é usado exatamente como ele é digitado. Esse parâmetro não aceita caracteres curinga. Para especificar vários caminhos para arquivos, separe os caminhos com uma vírgula. Se o parâmetro LiteralPath incluir caracteres de escape, coloque o caminho entre aspas simples. O PowerShell não interpreta nenhum caractere em uma única cadeia de caracteres entre aspas como sequências de escape. Para obter mais informações, consulte about_Quoting_Rules.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Offset

Isso representa o número de bytes a serem excluídos da saída hexadecima.

Esse parâmetro foi introduzido no PowerShell 6.2.

Type:Int64
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Especifica o caminho para arquivos. Use um ponto (.) para especificar o local atual. O caractere curinga (*) é aceito e pode ser usado para especificar todos os itens em um local. Se o parâmetro Path incluir caracteres de escape, coloque o caminho entre aspas simples. Para especificar vários caminhos para arquivos, separe os caminhos com uma vírgula.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Raw

Esse parâmetro não faz mais nada. Ele é retido para compatibilidade de script.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

String

Você pode canalizar uma cadeia de caracteres para este cmdlet.

Saídas

ByteCollection

Esse cmdlet retorna um ByteCollection. Esse objeto representa uma coleção de bytes. Ele inclui métodos que convertem a coleção de bytes em uma cadeia de caracteres formatada como cada linha de saída retornada por Format-Hex. Se você especificar o parâmetro Path ou LiteralPath , o objeto também conterá o caminho do arquivo que contém cada byte.

Observações

A coluna mais à direita da saída tenta renderizar os bytes como caracteres ASCII:

Geralmente, cada byte é interpretado como um ponto de código Unicode, o que significa que:

  • Caracteres ASCII imprimíveis são sempre renderizados corretamente
  • Caracteres UTF-8 de vários bytes nunca são renderizados corretamente
  • Os caracteres UTF-16 serão renderizados corretamente somente se o byte de alta ordem ocorrer NUL.