我该如何申请<<运算符和 ++字符指针 IN C 上的运算符

发布于 2024-12-10 19:11:45 字数 222 浏览 0 评论 0 原文

我想在字符指针上应用 << 移位运算符,并希望在某个位置增加它的值。

例如: char *p;

*p 中,我想在某个特定位置应用左移 *(p+i) << 1++ 在特定位置上递增运算符,例如 *(p+i)++

I want to apply << shifting operator on character pointer and want to increase value of this at some position.

For example: char *p;

In *p, i want to apply left shifting on some specific position *(p+i) << 1 and ++ increment operator on specific position like *(p+i)++

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半枫 2024-12-17 19:11:45

我不太确定我明白你想做什么,但如果你想做:

*(p+i) = *(p+i) << 1;
*(p+i) = *(p+i) + 1; //++

你可以将它们重写为:

*(p+i) <<= 1;
*(p+i) += 1;

I'm not really sure I understand what you want to do, but if you want to do:

*(p+i) = *(p+i) << 1;
*(p+i) = *(p+i) + 1; //++

You can rewrite them as:

*(p+i) <<= 1;
*(p+i) += 1;
带刺的爱情 2024-12-17 19:11:45

看起来你在做穷人混淆(而不是说加密)

for (char* it=strptr; *it; it++)
{
    *it <<= 1;
    (*it)++;
}

(假设strptr中以空结尾的字符串)

请注意,如果这是一个编码方案,如果高,信息会丢失(不可逆)使用了 char 的位(因此仅支持 7 位 ascii),并且解码时需要特别注意 127 输入值。

如果你坚持你可以这样做 *it = 1 + (*it) << 1;.但是,您不能合法地将其与 it++ 结合使用,因为它会根据 C++/C 标准调用未定义的行为

It looks like your doing poor-mans obfuscation (instead of say, encryption)

for (char* it=strptr; *it; it++)
{
    *it <<= 1;
    (*it)++;
}

(assuming null-terminated string in strptr)

Note that if this is an encoding scheme, information is lost (nonreversable) if the high bit of the char is used (so only 7bit ascii is supported) and the 127 input value will need special attention when decodeing.

if you insist you could do *it = 1 + (*it) << 1;. However you cannot legally combine it with it++ because it would invoke undefined behaviour as per the C++/C standard

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文