gpt4 book ai didi

c++ - 位模式匹配和替换

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:00 30 4
gpt4 key购买 nike

我遇到了一个非常棘手的位操作问题。

据我所知,保存一个值的最小变量大小是一个 8 位字节。 C/C++ 中可用的位操作适用于整个字节单元。

想象一下,我有一张 map 可以用信号 10000(5 位)替换二进制模式 100100(6 位)。如果来自文件的输入数据的第一个字节是 10010001(8 位)并存储在 char 变量中,则它的一部分与 6 位模式匹配,因此被 5 位信号替换以给出 1000001(7 位)的结果.

我可以使用掩码来操纵一个字节中的位,以获得最左边的位到 10000(5 位)的结果,但最右边的 3 位变得非常难以操纵。我无法移动原始数据最右边的 3 位以获得正确的结果 1000001(7 位),后跟该 char 变量中的 1 个填充位,该变量应由输入的下一个后续字节的第 1 位填充。

我想知道 C/C++ 是否真的可以对不适合 Char(1 字节)变量甚至 Int(4 字节)的长度位模式进行这种替换。 C/C++ 可以做到这一点,还是我们必须使用其他处理单位操作的汇编语言?

我听说 Power Basic 可以比 C/C++ 更好地进行逐位操作。

最佳答案

如果时间和空间不重要,那么您可以将位转换为字符串表示并对字符串执行替换,然后在需要时转换回来。 不是一种优雅的解决方案,而是一种有效的解决方案。

关于c++ - 位模式匹配和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3429488/

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