【发布时间】:2015-02-09 16:49:43
【问题描述】:
在考虑上溢和下溢的同时,在 c++ 中递增/递减字节的最佳方法是什么?例如,我有:
char c = random byte;
c += 0xB;
如果 c
假设c = 0xFF,相加后会是0xA吗?同样下溢,如果c = 0,结果会是0xF5吗?
此外,由于某些奇怪的原因,当我增加特定数字时,会出现奇怪的结果。例如,如果我将 0x0 增加 0xA,使用代码:
c = (c + 0xA) & 0xFF;
结果是:0x0D 0x0A 而不仅仅是 0x0A... 如下图所示:
而所有其余字节都正确增加。
【问题讨论】:
-
我无法识别单个递增或递减操作。
-
由于我不是母语人士,因此我不确定我是否使用了正确的词来描述该操作,但这就是我所说的增量:c = (c + 0xA)。我也只是编辑了代码,因为我忘记适当地更改代码中使用的变量。 @πάνταῥεῖ
-
你想用它来加密吗?也许您想改用exclusive or。
-
@BraveHeart 这叫做加法(反之是减法)。加/减1时,通常使用自增/自减。
-
至少就
0A而言,您在Windows 系统上似乎非常清楚,并且您的文件I/O 有助于将\n转换为\r\n(本机行尾指示器)为您服务。
标签: c++ byte overflow increment underflow