仅使用位运算符实现代码转换

2024-05-23 13:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数来转换输入的十六进制数。例如,我有这样的数字的初始格式

Initial format

函数将其转码为以下格式:

Final format

我将使用十六进制内置函数以字符串形式返回函数的结果。我试过这样的方法,但没用:

def task22(number) -> str:
    """
    Returns transcoded hexadecimal string, this function uses bitwise operators to transcode given value
    :param number: hexadecimal number to transcode
    :return: Transcoded hexadecimal string
    """
    a = number & 0b111111111111111
    b = number & 0b111111111111111
    c = number & 0b11
    a = a << 17
    b = b >> 13
    c = c >> 30

    return hex(a | b | c)

如何使用位运算符对数字进行转码?我需要使用按位向左和向右移位,但我不知道如何对上述格式进行移位


Tags: to方法函数字符串numberstringreturn格式
1条回答
网友
1楼 · 发布于 2024-05-23 13:50:10

解决了。问题是我需要使用32个零(因为所有位的数量为32)的按位AND运算符处理所有段,其中每个段位于如下位序列中:

def task22(number) -> str:
    """
    Returns transcoded hexadecimal string, this function uses bitwise operators to transcode given value
    :param number: hexadecimal number to transcode
    :return: Transcoded hexadecimal string
    """
    a = number & 0b00000000000000000111111111111111
    b = number & 0b00111111111111111000000000000000
    c = number & 0b11000000000000000000000000000000
    a = a << 17
    b = b >> 13
    c = c >> 30

    return hex(a | b | c)

相关问题 更多 >