首先,我们需要了解什么是RCDATA资源。这是它在MSDN 中的描述:
RCDATA 为应用程序定义了原始数据资源。原始数据资源允许直接在可执行文件中包含二进制数据。
nameID RCDATA [optional-statements] {raw-data ...}
raw-data
由一个或多个整数或字符串组成的原始数据。整数可以用十进制、八进制或十六进制格式指定。为了与 16 位 Windows 兼容,整数存储为 WORD 值。您可以通过使用“L”后缀限定整数来将整数存储为 DWORD 值。
在您的示例中,我们看到其配置TfrmMain
是源自TForm
并用作程序用户界面的主要形式。
考虑到这一点,我们可以理解Icon.Data
为应用程序存储一个看起来像是它的十六进制表示的图标。
事实上,如果我们查看IANA的ICO 注册信息,我们可以看到Magic Number
ICO 文件的(文件中的前四个八位字节以十六进制表示)与您的示例中的相同:
附加信息:
1.幻数:00 00 01 00
2.文件扩展名:ico
当您将其Icon.Data
与您所说的具有不同文件格式的另一个图像进行比较时,您将看不到匹配项,因为每种图像格式具有不同的结构和规格,因此,即使文件看起来相同,二进制数据也不同。
您可以使用 python 轻松地将十六进制字符串转换为图像并将图像转换为十六进制字符串:
import binascii
# open ico file and read its binary content
with open('example.ico', 'rb') as f:
content = f.read()
# convert the binary content to hexadecimal string
hexstr = binascii.hexlify(content)
# write this hexadecimal string to output.ico as binary
with open('output.ico','wb') as f:
f.write(binascii.unhexlify(hexstr))
您可以将 复制并粘贴Icon.Data
到纯文本中,然后使用 python 阅读它:
with open('hexadecimal.txt', 'r') as f:
content = f.read()
然后使用上面的示例将内容以二进制格式写入文件。
有了Resource Hacker
你,然后可以删除,添加,编辑和编译资源二进制文件。