【问题标题】:Splitting an unsigned char into two halves for a character [duplicate]将一个无符号字符分成两半作为一个字符[重复]
【发布时间】:2021-05-30 05:15:42
【问题描述】:

我有一个无符号字符,可以说是 0x5E,我想将其分成两个相等的部分。 为了完成这项工作,所需的位移是多少?我做了以下将无符号长的十六进制转换为两部分

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

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

【问题讨论】:

    标签: c++ split char unsigned


    【解决方案1】:

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

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

    【讨论】:

    • @Leif Messinger LOAF 和 0xffffffff00000000 更改为 0xffff0000?
    • @AzeemLodhi 这将是 0xf0,因为一个字符(例如)是 0x5E,这是它的一半。
    • 类似这样的 unsigned char first_half = (nNum & 0xf0) >> 4;
    • 无符号字符 second_half = nNum & 0x0f; @莱夫
    • 你能看一下cmets吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多