我试图在Powershell中将文件的内容作为十六进制,我使用以下内容:
get-content -encoding byte $fullFilePath | %{"{0:X2}" -f $_} | %{$hex = $hex + $_}
当我运行此脚本时,我没有收到错误,但它没有返回,它只是挂起。
有什么想法吗?
感谢。
答案 0 :(得分:3)
字符串连接将是严重的性能拖累。我转而使用stringbuilder:
$hex = New-Object System.Text.StringBuilder
get-content -encoding byte $fullFilePath |
%{"{0:X2}" -f $_} | %{$hex.Append($_) > $null}
$hex = $hex.ToString()
使用125KB文件进行测试后,从串联切换到使用stringbuilder后,运行时间从58秒减少到12秒。
答案 1 :(得分:3)
如果你碰巧使用PowerShell Community Extensions,它有Format-Hex
命令(别名fhex),例如:
get-content -encoding byte $fullFilePath | fhex