微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将一个无符号字符拆分为一个字符的两半

如何解决将一个无符号字符拆分为一个字符的两半

我有一个无符号字符,可以说是 0x5E,我想把它分成两个相等的部分。 完成此操作所需的位移是多少?我做了以下将 unsigned long 中的十六进制转换为两部分

unsigned int first_half = (my_long & 0xffffffff00000000) >> 32;
unsigned int second_half = my_long & 0x00000000ffffffff;

如何使用无符号字符进行操作。 32 是否会被 8 替换,因为它是一个字符。?

解决方法

原始代码执行 >> 32 是因为它试图将一半的位向下移动。 my_long 是一个 unsigned long int,它有 64 位,所以它的一半是 32。

一个字符是一个字节,它是 8,所以它会被移动 4 位。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。