다음을 통해 공유


Format-Hex

파일 또는 기타 입력을 16진수로 표시합니다.

구문

Format-Hex
      [-Path] <String[]>
      [-Count <Int64>]
      [-Offset <Int64>]
      [<CommonParameters>]
Format-Hex
      -LiteralPath <String[]>
      [-Count <Int64>]
      [-Offset <Int64>]
      [<CommonParameters>]
Format-Hex
      -InputObject <PSObject>
      [-Encoding <Encoding>]
      [-Count <Int64>]
      [-Offset <Int64>]
      [-Raw]
      [<CommonParameters>]

Description

cmdlet은 Format-Hex 파일 또는 기타 입력을 16진수 값으로 표시합니다. 출력에서 문자의 오프셋을 확인하려면 행의 맨 왼쪽에 있는 숫자를 해당 문자의 열 맨 위에 있는 숫자에 추가합니다.

cmdlet은 Format-Hex 손상된 파일의 파일 형식 또는 파일 이름 확장명이 없는 파일을 확인하는 데 도움이 될 수 있습니다. 이 cmdlet을 실행한 다음 16진수 출력을 읽어 파일 정보를 가져올 수 있습니다.

파일에서 사용하는 Format-Hex 경우 cmdlet은 줄 바꿈 문자를 무시하고 줄 바꿈 문자가 유지된 파일의 전체 내용을 한 문자열에 반환합니다.

예제

예제 1: 문자열의 16진수 표현 가져오기

이 명령은 문자열의 16진수 값을 반환합니다.

'Hello World' | Format-Hex

Label: String (System.String) <2944BEC3>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 48 65 6C 6C 6F 20 57 6F 72 6C 64                Hello World

헬로 월드 문자열은 파이프라인을 cmdlet으로 Format-Hex 보냅니다. 16진수 출력 Format-Hex 은 문자열에 있는 각 문자의 값을 표시합니다.

예제 2: 16진수 출력에서 파일 형식 찾기

이 예제에서는 16진수 출력을 사용하여 파일 형식을 확인합니다. cmdlet은 파일의 전체 경로와 16진수 값을 표시합니다.

다음 명령을 테스트하려면 로컬 컴퓨터에서 기존 PDF 파일의 복사본을 만들고 복사한 파일 File.t7f의 이름을 .로 바꿉니다.

Format-Hex -Path .\File.t7f -Count 48

Label: C:\Test\File.t7f

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D %PDF-1.5..%????.
0000000000000010 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 .1 0 obj..<</Typ
0000000000000020 65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20 e/Catalog/Pages

cmdlet은 Format-Hex Path 매개 변수를 사용하여 현재 디렉터리에 파일 이름을 지정합니다File.t7f. 파일 확장 .t7f 명은 일반적이지 않지만 16진수 출력 %PDF 은 PDF 파일임을 보여줍니다. 이 예제 에서는 Count 매개 변수를 사용하여 출력을 파일의 처음 48바이트로 제한합니다.

예제 3: 다양한 데이터 형식의 배열 서식 지정

이 예제에서는 다양한 데이터 형식의 배열을 사용하여 파이프라인에서 데이터 형식을 처리하는 방법을 Format-Hex 강조 표시합니다.

파이프라인을 통해 각 개체를 전달하고 개별적으로 처리합니다. 그러나 숫자 데이터이고 인접한 개체도 숫자인 경우 단일 출력 블록으로 그룹화됩니다.

'Hello world!', 1, 1138, 'foo', 'bar', 0xdeadbeef, 1gb, 0b1101011100 , $true, $false | Format-Hex

Label: String (System.String) <24F1F0A3>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 48 65 6C 6C 6F 20 77 6F 72 6C 64 21             Hello world!

   Label: Int32 (System.Int32) <2EB933C5>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 01 00 00 00 72 04 00 00                         �   r�

   Label: String (System.String) <4078B66C>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 66 6F 6F                                        foo

   Label: String (System.String) <51E4A317>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 62 61 72                                        bar

   Label: Int32 (System.Int32) <5ADF167B>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 EF BE AD DE 00 00 00 40 5C 03 00 00             ï¾-Þ   @\�

   Label: Boolean (System.Boolean) <7D8C4C1D>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 01 00 00 00 00 00 00 00                         �

매개 변수

-Count

16진수 출력에 포함할 바이트 수를 나타냅니다.

이 매개 변수는 PowerShell 6.2에서 도입되었습니다.

형식:Int64
Position:Named
Default value:Int64.MaxValue
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Encoding

입력 문자열의 인코딩을 지정합니다. 이는 입력에 [string] 만 적용됩니다. 매개 변수는 숫자 형식에 영향을 주지 않습니다. 출력 값은 항상 utf8NoBOM.

이 매개 변수에 허용되는 값은 다음과 같습니다.

  • ascii: ASCII(7비트) 문자 집합의 인코딩을 사용합니다.
  • ansi: 현재 문화권의 ANSI 코드 페이지에 대한 인코딩을 사용합니다. 이 옵션은 PowerShell 7.4에 추가되었습니다.
  • bigendianunicode: big-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • bigendianutf32: big-endian 바이트 순서를 사용하여 UTF-32 형식으로 인코딩합니다.
  • oem: MS-DOS 및 콘솔 프로그램에 대한 기본 인코딩을 사용합니다.
  • unicode: little-endian 바이트 순서를 사용하여 UTF-16 형식으로 인코딩합니다.
  • utf7: UTF-7 형식으로 인코딩합니다.
  • utf8: UTF-8 형식으로 인코딩합니다.
  • utf8BOM: BOM(바이트 순서 표시)을 사용하여 UTF-8 형식으로 인코딩
  • utf8NoBOM: BOM(바이트 순서 표시)이 없는 UTF-8 형식으로 인코딩
  • utf32: UTF-32 형식으로 인코딩합니다.

PowerShell 6.2부터 인코딩 매개 변수는 등록된 코드 페이지(예: ) 또는 등록된 코드 페이지의 문자열 이름(예: -Encoding 1251-Encoding "windows-1251")의 숫자 ID도 허용합니다. 자세한 내용은 Encoding.CodePage에 대한 .NET 설명서를 참조하세요.

PowerShell 7.4부터 인코딩 매개 변수 값을 사용하여 Ansi 수동으로 지정하지 않고도 현재 문화권의 ANSI 코드 페이지에 대한 숫자 ID를 전달할 수 있습니다.

참고 항목

UTF-7*은 더 이상 사용하지 않는 것이 좋습니다. PowerShell 7.1을 기준으로 인코딩 매개 변수를 지정 utf7 하면 경고가 기록됩니다.

형식:Encoding
허용되는 값:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

형식을 지정할 개체를 지정합니다. 개체를 포함하는 변수를 입력하거나 개체를 가져오는 명령이나 식을 입력합니다.

특정 스칼라 형식 [system.io.fileinfo] 만 지원됩니다.

지원되는 스칼라 형식은 다음과 같습니다.

  • [string], [char]
  • [byte], [sbyte]
  • [int16], [uint16], [short][ushort]
  • [int], [uint], [int32], [uint32]
  • [long], [ulong], [int64][uint64]
  • [single], , [float][double]
  • [boolean]

PowerShell 6.2 Format-Hex 이전에는 개체와 같은 모든 개체를 그룹화하여 여러 입력 형식의 파이프라인 입력을 처리했습니다. 이제 파이프라인을 통과할 때 각 개별 개체를 처리하고 개체가 인접하지 않는 한 개체를 함께 그룹화하지 않습니다.

형식:PSObject
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-LiteralPath

파일의 전체 경로를 지정합니다. LiteralPath값은 입력된 대로 정확하게 사용됩니다. 이 매개 변수는 와일드카드 문자를 허용하지 않습니다. 파일에 대한 여러 경로를 지정하려면 경로를 쉼표로 구분합니다. LiteralPath 매개 변수에 이스케이프 문자가 포함된 경우 경로를 작은따옴표로 묶습니다. PowerShell은 따옴표 붙은 단일 문자열의 문자를 이스케이프 시퀀스로 해석하지 않습니다. 자세한 내용은 about_Quoting_Rules 참조하세요.

형식:String[]
별칭:PSPath, LP
Position:Named
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Offset

이는 16진수 출력의 일부가 되는 것에서 건너뛸 바이트 수를 나타냅니다.

이 매개 변수는 PowerShell 6.2에서 도입되었습니다.

형식:Int64
Position:Named
Default value:0
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Path

파일의 경로를 지정합니다. 점(.)을 사용하여 현재 위치를 지정합니다. 와일드카드 문자(*)가 허용되며 위치의 모든 항목을 지정하는 데 사용할 수 있습니다. Path 매개 변수에 이스케이프 문자가 포함된 경우 경로를 작은따옴표로 묶습니다. 파일에 대한 여러 경로를 지정하려면 경로를 쉼표로 구분합니다.

형식:String[]
Position:0
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:True

-Raw

이 매개 변수는 더 이상 아무 작업도 수행하지 않습니다. 스크립트 호환성을 위해 유지됩니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

String

이 cmdlet에 문자열을 파이프할 수 있습니다.

출력

ByteCollection

이 cmdlet은 ByteCollection반환합니다. 이 개체는 바이트 컬렉션을 나타냅니다. 바이트 컬렉션을 반환된 각 출력 줄과 같이 형식이 지정된 문자열로 변환하는 메서드가 Format-Hex포함되어 있습니다. 출력에는 처리 중인 바이트 유형도 표시됩니다. Path 또는 LiteralPath 매개 변수를 지정하면 개체에 각 바이트가 포함된 파일의 경로가 포함됩니다. 문자열, 부울, 정수 등을 전달하면 적절하게 레이블이 지정됩니다.

참고

PowerShell에는 다음 별칭이 포함됩니다.Format-Hex

  • 모든 플랫폼:
    • fhx

출력의 오른쪽 열은 바이트를 ASCII 문자로 렌더링하려고 합니다.

일반적으로 각 바이트는 유니코드 코드 포인트로 해석됩니다. 즉, 다음을 의미합니다.

  • 인쇄 가능한 ASCII 문자는 항상 올바르게 렌더링됩니다.
  • 멀티바이트 UTF-8 문자가 제대로 렌더링되지 않음
  • UTF-16 문자는 높은 순서의 바이트가 발생하는 경우에만 올바르게 렌더링됩니다 NUL.