gpt4 book ai didi

c - 在 C 中的数组中存储十六进制转储

转载 作者:行者123 更新时间:2023-11-30 17:42:43 25 4
gpt4 key购买 nike

我正在尝试使用 C 语言创建一个 PFS 解压缩器。对于这个项目,我需要分析存档的十六进制转储,从中获取文件偏移量、名称和大小。

您认为将十六进制转储存储在字符数组中是一种好的做法吗?我能够将十六进制转换为字符吗?

谢谢你,安德鲁·博格

最佳答案

“我可以将十六进制转换为字符吗?”

是的。在程序读取代表十六进制数字的文字字符(例如“5”和“A”)后,程序可以将其转换为十六进制值 0x5a(十进制 90),然后将该值作为字符打印出来(打印为“Z”)。几乎所有其他可以想到的将字符转换为十六进制的方法,反之亦然,在 C 中都很容易。

How to correctly convert a Hex String to Byte Array in C? Printing char buffer in hex array Convert array of bytes to hexadecimal string in plain old C

我不清楚您在其余问题中要问什么。你问的是:

“我有这个二进制 PFS 文件;我可以编写一个 C 程序,当程序运行时,将该文件读入 RAM,如果是这样,那么 char 数组 (char[]) 是一个很好的容器?”

是的。当 C 程序将原始二进制文件数据读入内存时,它们通常将该数据存储到 char 数组中,并且它们单独跟踪长度(因为与表示 C 字符串的 char 数组不同,您的二进制数据可能偶尔会有零字节)。您可能想查看标准内存库函数( memcmp()memchr() 等)

“我有一个 ASCII 文本文件,它是 PFS 文件的十六进制转储;我可以编写一个 C 程序,当程序运行时,将该 ASCII 文本文件读取到 RAM 中吗?如果是,则为字符数组 (char[]) 是一个好的容器吗?”

是的。当 C 程序将文本文件读入内存时,它们通常将该数据存储在 char 数组中。您不需要单独跟踪长度,因为 ASCII 文本文件从不包含零字节,因此正常的字符串结尾零字节可以正常工作。您可能想查看标准字符串库函数( strchr()strstr() 等)。

“我有这个 PFS 文件;我可以编写一个 C 程序,在程序运行之前,将该文件的完整内容嵌入到我的程序的可执行代码中吗?”

原则上,是的,您可以将原始二进制文件转换为充满十六进制数字的文本文件,然后将其包含在源代码中。

很少这样做,而且比简单地在运行时加载程序更麻烦,但有时人们在想要一个独立的可执行文件时会这样做:

附:您的 PFS 文件是来自 Amiga、Playstation 还是其他设备?

关于c - 在 C 中的数组中存储十六进制转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com