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

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

我将我的字节存储为文件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不太专业,而且我无法找到任何与文档相关的内容所以你能建议我如何纠正这个问题吗?

谢谢你的任何信息

powershell
1个回答
0
投票

谢谢,我实际上发现了什么问题。腐败的原因是从java字节(-128 ... 127的值)转换为unsigned powershell字节的库方法不正确在十六进制redactor中我得到了int(8)表示,如果检入powershell(uint) )字节显示正确感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.