使用按位运算符从32位整数检索字节

使用按位运算符从32位整数检索字节

本文介绍了使用按位运算符从32位整数检索字节的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是什么问题,我现在有,我只是不明白它是如何错...

int getByte(int x, int n) {
  return ((x << (24 - 8 * n)) >> (8 * n));
}
解决方案

Your shifting doesn't make any sense - first, you shift left by (24 - 8n) bits, then you shift back right by 8n bits. Why? Also, it's wrong. If n is 0, you shift x left by 24 bits and return that value. Try pen and paper to see that this is entirely wrong.

The correct approach would be to do:

int getByte(int x, int n) {
  return (x >> 8*n) & 0xFF;
}

这篇关于使用按位运算符从32位整数检索字节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 18:14