PowerShell Bayt Dizisini Onaltılık Dizeye Dönüştürme


Bayt dizisini onaltılık dizeye dönüştürmek için PowerShell'deki [System.BitConverer] sınıfının ToString() yöntemini kullanın. Bu yöntem, giriş parametresi olarak bir bayt dizisi kullanın ve bayt dizisinin onaltılık gösterimini alın.

Onaltılık dize, ikili verilerin onaltılık formatta temsilidir. 0'dan 15'e kadar olan değerleri temsil etmek için 0-9 rakamlarını ve A-F harflerini kullanan 16 tabanlı bir numaralandırma sistemidir.

[System.BitConverter] sınıfı, sayısal tür değerlerini bayt dizilerine ve bayt dizilerinden dönüştürmenin yanı sıra bayt dizilerini diğer veri türlerine dönüştürmeye yönelik yöntemler sağlar.

Bu yazımızda PowerShell'de byte dizisini hex string'e dönüştürmek için ToString() metodunun nasıl kullanılacağını tartışacağız.

ToString() Yöntemini kullanarak Bayt Dizisini PowerShell'de Hex String'e Dönüştürme

Bayt dizisini onaltılık dizeye dönüştürmek için PowerShell'deki [System.BitConverter] sınıfının ToString() yöntemini kullanın.

Bir bayt dizisi oluşturmayı ve onu bir bayt dizisini onaltılık dizeye dönüştürmek için kullanmayı bir örnek yardımıyla anlayalım.

# Declare string variable
$str = "ShellGeek"

# converting string to bytes array
$bytesArr = [System.Text.Encoding]::UTF8.GetBytes($str)

# Print the bytes array
$bytesArr

# Convert byte array to hex string
$hex = [System.BitConverter]::ToString($bytesArr)

# Print the hex string
$hex

Yukarıdaki PowerShell betiğinde $str değişkeni, “ShellGeek ” değerini içeren bir dize türüdür. GetBytes() yöntemini kullanarak dizeyi bir bayt dizisine dönüştürür ve sonucu, bayt dizisini içeren $bytesArr değişkenine atar.

Bir bayt dizisini onaltılık dizeye dönüştürmek için, giriş parametresi olarak bayt dizisini alan ve onaltılık değer döndüren System.BitConverter sınıfının ToString() yöntemini kullanır. sicim

Yukarıdaki betiğin PowerShell'deki çıktısı, bayt dizisini onaltılık bir dizeye dönüştürür.

Harika İpucu: PowerShell'de dizeyi tam sayıya nasıl dönüştürebilirim?

Bayt Dizisini PowerShell'de Hex String'e Dönüştürme

Bayt dizisini onaltılı dizeye dönüştürmek için ToString() yöntemini sağlayan [System.BitConverter] sınıfını kullanın.

Aşağıdaki komut dosyasında $bytesArr değişkeni, “ShellGeek ” dizisinin ikili gösterimini içerir.

# Create a byte array
$bytesArr = [byte[]]@(83,104,101,108,108,71,101,101,107)         

# Convert byte array to hex string
$hex = [System.BitConverter]::ToString($bytes)       

# Print the string
$hex

Yukarıdaki PowerShell betiğinde, System.BitConverter sınıfı, PowerShell'de bir bayt dizisini onaltılık dizeye dönüştürmek için GetString() yöntemine sahiptir. Bu yöntem bir giriş parametresini bayt dizisi olarak alır ve bir dize döndürür.

Komut dosyasının çıktısı bayt dizisini onaltılık bir dizeye dönüştürür.

# Create a byte array
PS C:\> $bytesArr = [byte[]]@(83,104,101,108,108,71,101,101,107)  

# Convert byte array to hex string
PS C:\> $hex = [System.BitConverter]::ToString($bytes) 

# Print the hex string
PS C:\> $hex

PS C:\> ShellGeek

Onaltılık dize, PowerShell sürüm 7.1'den itibaren [System.Convert] sınıfının FromHexString() yöntemi kullanılarak bir bayt dizisine dönüştürülebilir.

# byte array
$bytesArr = [byte[]]@(83,104,101,108,108,71,101,101,107)

# Convert byte array to hex string
$hex = [System.BitConverter]::ToString($bytes)

# remove - between hex string
$hexString = $hex.Replace('-','')

# convert hex string to byte array using FromHexString method
$bytes = [System.Convert]::FromHexString($hexString)

# Print the bytes
Write-Host $bytes

Yukarıdaki PowerShell betiğinde bir bayt dizisi oluşturun ve System.BitConveter sınıfının ToString() yöntemini kullanarak bunu onaltılık bir dizeye dönüştürün.

PowerShell sürüm 7.1'den itibaren System.Convert sınıfı, onaltılı dizeyi bayt dizisine dönüştüren FromHexString() yöntemini sağlar.

PowerShell'in eski bir sürümünde, onaltılı dizeyi bayt dizisine dönüştürmek için aşağıdaki betiği kullanın.

# byte array
$bytesArr = [byte[]]@(83,104,101,108,108,71,101,101,107)

# Convert byte array to hex string
$hex = [System.BitConverter]::ToString($bytes)

# remove - between hex string
$hexString = $hex.Replace('-','')

# Convert hex string to byte array
 [byte[]]@(for ($i = 0; $i -lt $hexString.Length; $i += 2) { [convert]::ToByte($hexString.Substring($i, 2), 16) })    

Harika İpucu: PowerShell'de guid'i dizeye dönüştürme!

Çözüm

UTF8 kodlama biçiminin GetString() yöntemini kullanarak PowerShell'de bayt dizisinin onaltılı dizeye nasıl dönüştürüleceğine ilişkin yukarıdaki makalenin size yardımcı olacağını umuyorum.

Bayt dizisini onaltılık dizeye dönüştürmek, kriptografik anahtarlar oluşturma veya ikili verilerle çalışma gibi görevler için yararlı olabilir.

PowerShell Active Directory komutları ve PowerShell temelleri hakkında daha fazla konuyu ShellGeek ana sayfasında bulabilirsiniz.

İlgili makaleler