Skip to content

Instantly share code, notes, and snippets.

@khr0x40sh
Forked from marcgeld/psCompress.ps1
Created April 6, 2023 17:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save khr0x40sh/ce365e54931e21f9d116d1bb5a4ba83c to your computer and use it in GitHub Desktop.
Save khr0x40sh/ce365e54931e21f9d116d1bb5a4ba83c to your computer and use it in GitHub Desktop.
Powershell: Compress and decompress byte array
# Compress and decompress byte array
function Get-CompressedByteArray {
[CmdletBinding()]
Param (
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[byte[]] $byteArray = $(Throw("-byteArray is required"))
)
Process {
Write-Verbose "Get-CompressedByteArray"
[System.IO.MemoryStream] $output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream $output, ([IO.Compression.CompressionMode]::Compress)
$gzipStream.Write( $byteArray, 0, $byteArray.Length )
$gzipStream.Close()
$output.Close()
$tmp = $output.ToArray()
Write-Output $tmp
}
}
function Get-DecompressedByteArray {
[CmdletBinding()]
Param (
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[byte[]] $byteArray = $(Throw("-byteArray is required"))
)
Process {
Write-Verbose "Get-DecompressedByteArray"
$input = New-Object System.IO.MemoryStream( , $byteArray )
$output = New-Object System.IO.MemoryStream
$gzipStream = New-Object System.IO.Compression.GzipStream $input, ([IO.Compression.CompressionMode]::Decompress)
$gzipStream.CopyTo( $output )
$gzipStream.Close()
$input.Close()
[byte[]] $byteOutArray = $output.ToArray()
Write-Output $byteOutArray
}
}
[string] $text = "some text to encode"
Write-Host "Text: " ( $text | Out-String )
[System.Text.Encoding] $enc = [System.Text.Encoding]::UTF8
[byte[]] $encText = $enc.GetBytes( $text )
$compressedByteArray = Get-CompressedByteArray -byteArray $encText
Write-Host "Encoded: " ( $enc.GetString( $compressedByteArray ) | Out-String )
$decompressedByteArray = Get-DecompressedByteArray -byteArray $compressedByteArray
Write-Host "Decoded: " ( $enc.GetString( $decompressedByteArray ) | Out-String )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment