feicuiboy 发表于 2010-8-8 10:09:02

AU3如何采用二进制读取一个文件的内容

本帖最后由 feicuiboy 于 2010-8-8 10:47 编辑

AU3如何采用二进制读取一个文件的内容,有这样一个命令或函数吗??
比如exe或其他文件,作用是想把文件以文本方式保存,用的时候在该后缀即可。

比如图一改各后缀就成图二的exe文件了,而且正常使用。







FileOpen ??

xsjtxy 发表于 2010-8-8 10:31:18

为什么要用2进制。

feicuiboy 发表于 2010-8-8 10:49:13

回复 2# xsjtxy


保存文件用

xsjtxy 发表于 2010-8-8 10:50:49

用16进制不更好吗?

republican 发表于 2010-8-8 10:52:30

fileopen(x,16)

feicuiboy 发表于 2010-8-8 11:12:31

本帖最后由 feicuiboy 于 2010-8-8 11:17 编辑

写了个读取的,但是保存还是文本,奇怪?$sFile = "2.txt"
$hFile = FileOpen($sFile, 16)
$bBinary = FileRead($hFile)
FileClose($hFile)

FileWrite(@ScriptDir & '\11.txt, $bBinary)
Msgbox(0, "", $bBinary)但是为什么文本里显示不是16进制呢,很奇怪{:face (301):}



republican 发表于 2010-8-8 11:42:14

汗咯……Lz先搞明白二进制储存和以二进制显示文件的关系。 你已经以二进制写入了文件,你的文本软件讲二进制转化为ANSI字符了

3mile 发表于 2010-8-8 11:52:36

#include <WinAPI.au3>

Global $sFile, $hFile, $sText, $nBytes, $tBuffer, $iMemo,$slen
$sFile="pi.exe"
$objfile="abc.exe"
$hfile=FileOpen($sFile,16)
$sText=FileRead($hFile)
$slen=BinaryLen($sText)
FileClose($sFile)
MsgBox(0,0,"read ok")

$tBuffer = DllStructCreate("byte[" & $slen & "]")
DllStructSetData($tBuffer, 1, $sText)
$obj_hFile = _WinAPI_CreateFile($objFile, 0,4)
_WinAPI_WriteFile($obj_hfile,DllStructGetPtr($tBuffer),$slen, $nBytes)
_WinAPI_CloseHandle($obj_hFile)
MsgBox(0,0,"write ok")

feicuiboy 发表于 2010-8-8 12:06:05

回复 8# 3mile


对DllStructCreate这类语句,看了帮助文件后还是没能弄懂,能不能解释一下,谢谢

3mile 发表于 2010-8-8 13:14:57

这个不大好解释,请GOOGLE"数据结构"

h20040606 发表于 2010-8-15 08:28:38

16进制就是二进制啊

wanzhen95 发表于 2024-4-25 14:49:21

谢谢分享
页: [1]
查看完整版本: AU3如何采用二进制读取一个文件的内容