Perl将二进制流转换为十六进制

Perl将二进制流转换为十六进制,第1张

概述我遇到的问题是当我有一个Perl脚本通过STDIN读取数据(PE可执行文件)并且流包含行终止符“0A”时,转换为十六进制错过了它.然后,当我将十六进制数据转换回来时,它已损坏(以十六进制格式丢失0A).那么如何在Perl中检测换行符“0A”的“ windows”版本呢? 注意:Linux OS(Perl)正在读取Windows PE !usr/bin/perlwhile($line = <ST 我遇到的问题是当我有一个Perl脚本通过STDIN读取数据(PE可执行文件)并且流包含行终止符“0A”时,转换为十六进制错过了它.然后,当我将十六进制数据转换回来时,它已损坏(以十六进制格式丢失0A).那么如何在Perl中检测换行符“0A”的“ windows”版本呢?

注意:Linux OS(Perl)正在读取windows PE

!usr/bin/perlwhile($line = <STDIN>){    chomp($line);    @bytes = split //,$line;    foreach (@bytes)    {        printf "%02lx",ord $_;    }}

用法示例:

[root@myBox test]# cat test.exe | perl encoder.pl > output
解决方法 在循环中,您在每个输入行上运行chomp.这将从您的行末端删除当前$/中的任何值.有可能这是0x0a,这就是值的来源.尝试从循环中删除chomp($line).

通常,使用面向行的读取对于本身不是面向行的二进制文件没有意义.您应该查看较低级别的读取功能,该功能允许您从文件中读取一个字节块,而无需关心这些字节是什么.然后,您可以使用块而不是行来处理数据.

总结

以上是内存溢出为你收集整理的Perl将二进制流转换为十六进制全部内容,希望文章能够帮你解决Perl将二进制流转换为十六进制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存