将十六进制数据转换为数组形式的Python实现

十六进制数据在计算机领域中很常见。但是,有时需要将十六进制数据转换为可供使用的数组形式。在这篇技术博客中,我们将讨论如何使用Python将十六进制数据转换为C语言的数组形式。从而方便的放置到代码中,对于代码作比较。

实现的代码如下

data_hex = "90 8d cd 56 cf 8f aa ba 70 e7 79 84 c5 c4 2f 22 c8 ad 31 5a e1 71 d4 10 1f 07 6f 73 7c 16 0a af"


# 将字符串按空格分割成一个列表
hex_list = data_hex.split()

# 对于列表中的每个元素,将其转换为十六进制并添加 "0x" 前缀
hex_list = ["0x" + x for x in hex_list]

# 将列表分割成多个子列表,每个子列表包含最多16个元素
lines = [hex_list[i : i + 16] for i in range(0, len(hex_list), 16)]

# 对于每个子列表,使用 join() 函数将其连接成一行,并在元素之间添加逗号和空格
lines = [", ".join(line) for line in lines]

# 使用 join() 函数将所有行连接起来,中间用换行符分隔
out_data = "\n".join(lines)

print(out_data)


def format_hex_data(data_hex: str) -> str:
    """
    将输入的十六进制数据字符串转换为格式化的输出字符串。

    Args:
        data_hex: 十六进制数据字符串,以空格分隔。

    Returns:
        格式化的输出字符串。
    """
    # 将字符串按空格分割成一个列表
    hex_list = data_hex.split()

    # 对于列表中的每个元素,将其转换为十六进制并添加 "0x" 前缀
    hex_list = ["0x" + x for x in hex_list]

    # 将列表分割成多个子列表,每个子列表包含最多16个元素
    lines = [hex_list[i : i + 16] for i in range(0, len(hex_list), 16)]

    # 对于每个子列表,使用 join() 函数将其连接成一行,并在元素之间添加逗号和空格
    lines = [", ".join(line) for line in lines]

    # 使用 join() 函数将所有行连接起来,中间用换行符分隔
    out_data = ",\n".join(lines)

    return out_data


# import cmd
# class MyCmd(cmd.Cmd):
#     intro = "Welcome to my interactive program!\nType help or ? to list commands.\n"
#     prompt = "> "

#     def do_hello(self, arg):
#         print("Hello, world!")

#     def do_quit(self, arg):
#         print("Quitting...")
#         return True


if __name__ == "__main__":
    # MyCmd().cmdloop()

    while True:
        user_input = input("请输入字符串(输入'esc'退出):")
        if user_input == "esc":
            break
        # 在这里添加对字符串的处理代码
        processed_input = format_hex_data(user_input)  # 这里仅仅将字符串转换为大写形式
        print("处理后的字符串:\r\n", processed_input)


print("\n================================")

运行结果如下所示。

对于输出的字符串可以拷贝到数组中,方便使用。

你可能感兴趣的:(python,numpy,开发语言)