如何读取文件的16进制和ASCII代码[已解决]
本帖最后由 haijie1223 于 2014-12-9 13:09 编辑如图是用winhex打开的一个rar文件和jpg文件,其中左边显示的是16进制格式,右边是ASCII码格式。
现在问题有两个:
1、如何用AU3读取到文件的这个16进制字符串,如何用AU3读取到文件的ASCII码。
2、如何将文件的16进制转化到ASCII码。
以前只是读取文本文件,倒是没有注意其他格式文件的读取。高手请指点。 16文件打开模式即可$h = FileOpen('XXX文件', 16)
$b = FileRead($h) ;16进制字符串
FileClose($h)
$sA = BinaryToString($b);ANSI 回复 2# afan
真汗死了,16进制这个我没有去对比。
不过ASCII码这个,用CONSOLEWRITE显示不全,是转化不全还是显示不全呢? 大神的问题太高深了....只能帮你顶一下~~~ 我x,想直接读rar? 回复 5# netegg
不仅仅是RAR,是任何格式的文件。 路过,高深啊!!! 回复afan
真汗死了,16进制这个我没有去对比。
不过ASCII码这个,用CONSOLEWRITE显示不全,是 ...
haijie1223 发表于 2014-12-9 07:40 http://www.autoitx.com/images/common/back.gif
显示问题,实际数据都是全的,你可以 FileWrite(数据, 'xxx.txt') 看看 回复 8# afan
这是SCITE的bug吗,难道就像dos 的1a?Afan,移帖吧,谢谢! 回复 8# afan
A版,遇到这么一个问题,用copy /b 命令可以将两个文件合并为一个文件。例如jpg和rar文件合并为jpg文件。
然后用winhex找到两个文件的分界点可以将两个文件分开。我就是想用AU3找到这个分界点然后分别写会到各自的文件。$hfile=FileOpen("003.jpg",16) ;003.jpg 是jpg和rar 合并后的文件。
$sBinry=FileRead($hfile)
FileClose($hfile)
$pos=StringInStr($sBinry,"526172211A");526172211A 是rar文件的开头,jpg文件在前。
$sNewstr=StringMid($sBinry,1,$pos)
$hfile=FileOpen("005.jpg",2+16) ;这是打算从合并文件中分出的那个jpg文件
FileWrite($hfile,$sNewstr)
FileClose($hfile)以上的代码并不能实现我的目的。经分析,用string相关的函数时,AU3已经将文件的二进制代码转化为字符型了,再写入到文件时,新文件的二进制代码其实已经变化。
请问A版,这个问题如何解决? 回复 10# haijie1223
有 0x 这两个字符 回复 11# afan
A版,在下愚钝,没有看明白处理方法。还请明示。{:face (396):} 这行改改 $sNewstr=StringMid($sBinry,1,$pos - 1) 试试 回复 13# afan
真被我自己打败了~~{:face (394):}
页:
[1]