【问题标题】:how can i apply << operator and ++ operator on character pointer IN C [closed]我如何在 C 中的字符指针上应用 << 运算符和 ++ 运算符 [关闭]
【发布时间】:2011-10-18 11:18:39
【问题描述】:

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

例如:char *p;

*p 中,我想在*(p+i) &lt;&lt; 1++ 某些特定位置上应用左移运算符*(p+i)++ 等特定位置

【问题讨论】:

  • 问题是什么?你展示它是如何完成的。此外,如果您正在这样做,请避免使用 Caesar Cyphers。它们非常没用:)

标签: c bit-manipulation bitwise-operators bit-shift


【解决方案1】:

我不确定我是否了解您想要做什么,但如果您想这样做:

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

您可以将它们重写为:

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2013-07-16
      • 2021-07-02
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 2013-05-26
      相关资源
      最近更新 更多