将字符串转换为十六进制并在 python 中计算二进制结果

本文关键字:python 计算 二进制 结果 字符串 转换 十六进制 | 更新日期: 2023-09-27 18:35:16

我被我的代码困住了,尝试了这方面的任何东西以及谷歌展示的许多其他东西。

对于问题:

我尝试将一些代码截图从 C# 转换为 phyton,但在这个特殊点上我卡住了。

public static long decode(string data, int size, int offset = 0)
{
    long value = 0;
    for (int i = 0; i < size; ++i) {
        value <<= 6;
        value |= (long)data[offset + i] - 0x30;
    }
    return value;
}

字符串数据可能类似于 1Dh .基于此,我将每个字符转换为十六进制等价物:0x31、0x44、0x68和减去0x30;所以我得到了0x1,0x14,0x38;在下一步中,我必须转换为二进制等效000001 010100、111000 并将其合并到000001010100111000. 由此我想得到整数含义,在本例中为 5432。

是否有可能在python中以智能和简单的方式做到这一点?

将字符串转换为十六进制并在 python 中计算二进制结果

这实际上非常简单,翻译也非常简单。您可以继续使用位移位。唯一的变化是 for 循环的语法和使用 ord() 从字符中获取整数值。

def decode(data, size, offset=0):
    value = 0
    for ch in data[offset:size]:
        value <<= 6
        value |= ord(ch) - 0x30
    return value

在解释器中运行它,我得到5432

>>> decode("1Dh", 3)
5432