如何在powershell中将字符串系统对象转换为字节系统数组?

问题描述 投票:0回答:1

我想从二进制字符串创建一个二进制 blob,就像使用 .NET 文件流从文件中将二进制 blob 读入缓冲区一样。然后我想从 blob 中的特定偏移量读取 2 个字节。

我创建一个这样的文件:

echo "AAAABBBB" > .\zzblob.txt 
$bytes = "AAAABBBB`r`n"
$aa = [system.bitconverter]::touint16($bytes, 0)

# FAIL!

# Checking the type:
$bytes.GetType() | select Name, BaseType | ft -HideTableHeaders

# String System.Object

现在,使用流缓冲区执行相同的操作,我们得到了其他东西。

$fp = ".\zzblob.txt"
$bf = (new-object byte[](256))
$sp = New-Object System.IO.FileStream($fp, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read)
$sp.Length
$sp.Read($bf, 0, 256)
$sp.close()

$aa = [system.bitconverter]::touint16($bf, 2)   # ..AA
d2h $aa
# 0x4141  ## OK!

# Checking type:
$bf.GetType() | select Name, BaseType | ft -HideTableHeaders

# Byte[] System.Array

如何将字符串从

String System.Object
转换为
Byte[] System.Array

powershell
1个回答
0
投票

看来我在发布这篇文章后就找到了答案。

$bytes = "AAAABBBB`r`n"
$byt = ([System.Text.Encoding]::UTF8).GetBytes($bytes)
$byt.GetType() | select Name, BaseType | ft -HideTableHeaders

# Byte[] System.Array

$bb = [system.bitconverter]::touint16($byt, 4)
d2h $bb
# 0x4242  ## OK!
© www.soinside.com 2019 - 2024. All rights reserved.