我将字节存储为字符串值
像这样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不太专业,在文档中找不到任何相关内容 所以你能建议我如何纠正这个问题?
感谢您提供任何信息
答案 0 :(得分:0)
谢谢,我实际上发现了问题所在。损坏的原因是从java字节(值从-128 ... 127到)转换为无符号Powershell字节的错误的库方法,并且在十六进制编辑器中,我有int(8)表示形式,如果在powershell(uint中检查),则表示)字节正确显示谢谢