问题描述
我有一个读取BMP文件的代码,它有一个指向具有文件内容的结构的指针:
$fileContent
然后,它创建一个具有两个元素的BMP结构:一个具有54个字节的大小(BMP标头),第二个具有其余的元素(BMP大小-54),并且它使用指向Local $bmpStruct = DllStructCreate("struct;byte[54];byte[" & $bmpFileSize - 54 & "];endstruct",DllStructGetPtr($fileContent))
的指针:
DllStructGetData($bmpStruct,2,1)
在这种情况下,当我打电话给DllStructGetData($bmpStruct,1)
时,应该打印什么,BMP文件中的索引53或54还是索引0?
我假设$bmpFileSize - 54
指的是 second 元素,其大小为0
,因此我认为它将打印索引54,但我不确定。>
我试图用脚本检查它,但是使用它时,它一直在打印我Func CreateFile($i_Filename)
Local $flrichemye = DllCall("kernel32.dll","ptr","CreateFile","str",$i_Filename,"uint",2147483648,3,128,0)
Return $flrichemye[0]
EndFunc
Local $bmpName = "C:\tmp\mypic.bmp"
Local $fileHandle = CreateFile($bmpName)
If $fileHandle <> -1 Then
Local $bmpFileSize = FileGetSize($bmpName)
Local $fileContent = DllStructCreate("struct;byte[" & $bmpFileSize & "];endstruct")
Local $readResult = FileRead($fileHandle,$fileContent)
If $readResult <> -1 Then
Local $bmpStruct = DllStructCreate("struct;byte[54];byte[" & $bmpFileSize - 54 & "];endstruct",DllStructGetPtr($fileContent))
MsgBox(0,"AutoIt","Result: " & DllStructGetData($bmpStruct,1))
EndIf
EndIf
,不知道为什么。
我的代码:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------------------------------------------------
00000000 | 42 4D 64 1B 04 00 00 00 00 00 36 00 00 00 28 00
00000010 | 00 00 2B 01 00 00 2B 01 00 00 01 00 18 00 00 00
00000020 | 00 00 2E 1B 04 00 C3 0E 00 00 C3 0E 00 00 00 00
00000030 | 00 00 00 00 00 00 FF FF FE FE FE FE FF FF FF FF
^
Index 53 (decimal)
图片内容:
{{1}}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)