gpt4 book ai didi

c++ - 有没有一种快速的方法/技巧可以在文件的开头添加一位?

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:28 25 4
gpt4 key购买 nike

对于一个特殊的算法,我必须在文件的开头多次添加(或删除)一位。它必须是一个位而不是像 '0000 0001' 这样的一个完整字节。

之后我不必用新内容覆盖文件,所以只要在内存中编辑文件数据就足够了。对于这个算法,我可以在文件数据的末尾添加一个字节,例如“0000 0000”或“1000 0000”。

您可以将其概括为整个文件的移位。我已经自己尝试过了。我以整数(32 位)读取文件,在每种情况下将它们向右移动,并将最后一位从之前的整数转移到第一个位置。

但是这个方法肯定不够快。我也搜索了互联网,但我找不到这样的东西。是否有可能更快地做到这一点?

最佳答案

对您的问题的快速回答是:没有办法有效地做到这一点。

长答案实际上是一系列新问题:你真正打算用这个实现什么? 在文件开头移动一位到底是什么意思?

您提到以 32 位 block (int,或更好的 uint32_t)读取文件并一次移动一个:执行此操作时存在字节顺序问题这边走。它不可移植,因为某些 CPU 将以小端顺序(英特尔架构)读取 uint32_t,而其他一些则以大端顺序(摩托罗拉、PowerPC、ea)读取。

甚至字节中的位顺序也有些困惑:在文件开头移动一位,您是说设置第一个字节的位 0x80 还是第一个字节的位 0x01?位图文件和图形卡在这方面有冲突的约定。

如果这个位文件是在你的程序之外指定的,你应该非常注意这些细节。如果这是您自己的发明,则更改算法可能有助于简化这种情况。

关于c++ - 有没有一种快速的方法/技巧可以在文件的开头添加一位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285939/

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