powershellhexhexdump

Formatting powershell Get-Content byte code from file


I am able to get the byte code but 2 things I am trying to do here is

  1. format the bytecode so that there are 2 digits per byte. The leading zeroes are excluded.
  2. Remove spaces between the bytes themselves because they are taking up a lot of space.
gc -Raw -encoding byte "c:\picture.jpg" | % {write-host ('{0:x}' -f $_) -noNewline};

tried trim() but not sure if that is possible or where to put it.


Solution

  • The simplest - and most efficient - solution is to use .NET APIs:

    In Windows PowerShell, use System.BitConverter.ToString, and remove the resulting - separators afterwards:

    [System.BitConverter]::ToString(
      (Get-Content -Raw -Encoding Byte c:\picture.jpg)
    ) -replace '-'
    

    In PowerShell (Core) 7+, use System.Convert.ToHexString, which directly yields the desired format:

    [System.Convert]::ToHexString(
      (Get-Content -Raw -AsByteStream c:\picture.jpg)
    )
    

    Note: