http头中的Concat字符串和字节

时间:2014-12-17 22:33:09

标签: powershell powershell-v2.0

我试图通过邮寄请求上传zip。为此,我需要发送字符串和字节数据。

好的问题是二进制编码仍然存在。原始邮政编码的第一行是PK........,Q?E?;,其中上传的副本为PK........,Q.E.;原始邮件为?,而副本将其转换为.

1 个答案:

答案 0 :(得分:2)

将其转换为字符串:

[System.Text.Encoding]::ASCII.GetString([byte]$file)

更具可读性:

$byteArray = [byte]$file
$enc = [System.Text.Encoding]::ASCII
$stringContents = $enc.GetString($byteArray)

如果文件的内容实际上是Unicode或其他编码,则可以使用其他编码。

要查看其他编码:

[System.Text.Encoding] | Get-Member -Type Properties -Static

根据评论进行编辑:

我误解了你的问题。您担心字节被转换为字节数值的ASCII表示。

这实际上并不是发生了什么。当您使用Write-Host然后转换正在进行时,仅用于显示目的。

字节数组中的值是原始二进制数据。

根据您的编辑进行编辑:

您正在将字节数组$bytes嵌入另一个字符串中。这隐式地将其转换为可显示的格式,这不是您想要的。

$bytes确实包含原始数据。在这种情况下,您想要的是将每个字节直接放在字符串中。您应该尝试使用我发布的第一个解决方案,然后在$stringContents中嵌入$bytes而不是$parameters。我认为这会做你所希望的。

当您显示包含实际包含内容的字符串时,不要混淆屏幕上打印的内容。虽然[String]对象可能更复杂,但最简单的一个字符串一个字节数组。例如,在C中,你没有声明字符串,你声明了一个char的数组(通常是一个字节)。

我建议您尝试将其转换为字符串的方法,如果它不起作用则发表评论。