将字节写入文件,字节移位

时间:2019-04-09 22:27:54

标签: powershell

我将字节存储为字符串值 像这样D:\source.txt

208
203
131
132
148
128
128
128
128
128

我只想阅读它们,并存储在另一个文件中

对于Powershell来说我是一个新手,所以编写了这样的程序

$bytes = New-Object System.Collections.ArrayList
  foreach($line in [System.IO.File]::ReadLines("D:\source.txt"))
    {
       [void]$bytes.Add([System.Convert]::ToByte($line));
    }

[System.IO.File]::WriteAllBytes("D:\target.zip",[Byte[]]$bytes.ToArray());

因此,根据我的理解,它应该获取字符串值,将其转换为字节 将其存储在ArrayList中,将ArrayList转换为字节数组并将其写入文件

即使我echo [Byte[]]$bytes.ToArray()看到正确的值,一切都会顺利

但是结果文件已损坏,当我逐字节检查它时,我会看到下一个值

-48
-53
-125
-124
-108
-128
-128
-128
-128
-128

好像WriteAllBytes会将我的字节值移动128,但是为什么在哪里?

我对Powershell不太专业,在文档中找不到任何相关内容 所以你能建议我如何纠正这个问题?

感谢您提供任何信息

1 个答案:

答案 0 :(得分:0)

谢谢,我实际上发现了问题所在。损坏的原因是从java字节(值从-128 ... 127到)转换为无符号Powershell字节的错误的库方法,并且在十六进制编辑器中,我有int(8)表示形式,如果在powershell(uint中检查),则表示)字节正确显示谢谢