连接两个字节数组并返回一个字节数组
Concat two byte arrays and get a byte array back
我想将字符串转换为带有 BOM 的 UTF8 字节数组,但这段代码生成的是对象数组而不是字节数组:
$input = "hello world"
$encoding = [system.Text.Encoding]::UTF8
$bytes = $encoding.GetBytes($input)
$bytesWithBom = $encoding.GetPreamble() + $bytes
$encoding.GetPreamble().GetType()
$bytes.GetType()
$bytesWithBom.GetType()
输出:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Byte[] System.Array
True True Byte[] System.Array
True True Object[] System.Array
所以+
,给定两个字节数组,returns一个对象数组。如何连接并获得字节数组?
将结果 [Object[]]
转换为 [byte[]]
:
$bytesWithBom = @($encoding.GetPreamble() + $bytes) -as [byte[]]
或者预先手动创建目标数组并将两个输入数组复制到其中:
$preamble = $encoding.GetPreamble()
$bytesWithBom = [byte[]]::new($bytes.Length + $preamble.Length)
$preamble.CopyTo($bytesWithBom, 0)
$bytes.CopyTo($bytesWithBom, $preamble.Length)
我想将字符串转换为带有 BOM 的 UTF8 字节数组,但这段代码生成的是对象数组而不是字节数组:
$input = "hello world"
$encoding = [system.Text.Encoding]::UTF8
$bytes = $encoding.GetBytes($input)
$bytesWithBom = $encoding.GetPreamble() + $bytes
$encoding.GetPreamble().GetType()
$bytes.GetType()
$bytesWithBom.GetType()
输出:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Byte[] System.Array
True True Byte[] System.Array
True True Object[] System.Array
所以+
,给定两个字节数组,returns一个对象数组。如何连接并获得字节数组?
将结果 [Object[]]
转换为 [byte[]]
:
$bytesWithBom = @($encoding.GetPreamble() + $bytes) -as [byte[]]
或者预先手动创建目标数组并将两个输入数组复制到其中:
$preamble = $encoding.GetPreamble()
$bytesWithBom = [byte[]]::new($bytes.Length + $preamble.Length)
$preamble.CopyTo($bytesWithBom, 0)
$bytes.CopyTo($bytesWithBom, $preamble.Length)