bit-shift

    1热度

    6回答

    如果我有两件东西是十六进制的,我可以如何将他们的二进制文件附加在一起得到一个值吗? 在C++中, 说我有 unsigned char t = 0xc2; // 11000010 unsigned char q = 0xa3; // 10100011 我要的是不知何故, 1100001010100011,这可能使用位运算符? 我想提取T和Q的二进制形式和追加他们...

    1热度

    6回答

    我在读一件设备生成的二进制日志文件。 我有一个字节[]的数据。 如果我需要阅读两个字节来创建一个短,我可以做这样的事情: short value = (short)(byte[1] << 8); value += byte[2]; 现在我知道的值是正确的有效数据。 我该如何知道文件是否搞砸了,可以说FF FF的值是在字节数组中的那两个地方? 当我查看FF FF转换为短的结果值时,我得到-1。

    5热度

    6回答

    我希望alwaysPositive能够为lareValue1和largeValue2(至少是1)分配一个包含所有可能值的正数。 下面的语句导致缓冲区溢出: int alwaysPositive = (largeValue1 + largeValue2)/2; 我知道我可以阻止它通过减去并添加: int alwaysPositive = largeValue1 + ((largeValue2 -

    10热度

    4回答

    有人可以向我解释为什么面具根本没有向右移动?你可以使用任何东西代替1,结果将是相同的。 unsigned mask = ~0 >> 1; printf("%u\n", mask);

    2热度

    4回答

    我试图将int转换成代表那个int(大端)的三个bytes。 我敢肯定,它有点与位和位移有关。但我不知道该怎么去做。 例如: int myInt; // some code byte b1, b2 , b3; // b1 is most significant, then b2 then b3. *注意,据我所知,一个int是4个字节和三个字节的上/下溢的机会。