2017-06-14 286 views
-3

我并不是说该文件与“0x0051a”或其他内容一样,我的意思是字节0x4f是文件中的第一个字节,并且我想读取并将其分配给一个指针。 到目前为止,我的代码如下。有什么建议?C++如何从文件中读取十六进制字节并将它们存储为指针

unsigned char basePointer; 

if (inFile.is_open()) { 
    inFile.read(&basePointer, 1); } 
+1

你的意思是*从文件读取数据到数组中,并且有'basePointer'(它不是指针,btw)指向它的开始*?因为你的问题目前没有意义。 – LogicStuff

+0

我的意思是文件从指针表开始。我想将其中的指针读入指针(对不起,忘记在这里添加*作为问题),然后使用它们跳转到文件中的不同偏移量 –

+1

它们是指针还是偏移量?通常,将指针存储在文件中是一个坏主意,因为下次加载程序时,内存可能会处于不同的位置。如果它们是偏移量,请使用正确的大小整数,并将其用作文件内容的索引。 –

回答

0

典型的做法是,你读出的数值为无符号整数[除非偏移量是相对的东西,而不是绝对的,有些偏移点“后退”从你现在在哪里]

事情是这样的:

uint32_t offset; 
inFile.read(reinterpret_cast<char*>(&offset), sizeof(offset)); 

很明显,不知道你的文件的具体内容是什么,这是很难形容你与偏移做什么 - 它是一个从文件开始的偏移量,或从一开始就文件内部分的内容?如果它是一个简单的抵消:

inFile.seekg(offset); 
inFile.read(...); 

同样,不知道你会从该位置读什么,这真的不是可以写代码,做你所需要的东西,只是一个大致的轮廓。

+0

好吧,我明白了。我正在阅读一些文本,确保它的格式正确,并将每个两字节字符附加到一个字符串中,以后我将转储到文件中。 –

+0

对不起,你能提供一个文件样本吗?我不确定我了解什么是文件格式 - 听起来你有一个文本文件,而不是二进制文件 - 我的解决方案是针对二进制文件。 –

相关问题