📜  将十六进制值字符串转换为 ASCII 值字符串(1)

📅  最后修改于: 2023-12-03 15:25:16.904000             🧑  作者: Mango

将十六进制值字符串转换为 ASCII 值字符串

在编程中,我们经常会遇到需要将十六进制值字符串转换为 ASCII 值字符串的需求。例如,当我们从网络或文件中读取十六进制值时,需要将其转换为可读的字符串。本文将介绍几种不同编程语言实现将十六进制值字符串转换为 ASCII 值字符串的方法。

Python

在 Python 中,可以使用 binascii 模块中的 unhexlify 函数将十六进制字符串转换为二进制数据,然后使用 decode 函数将二进制数据解码为 ASCII 字符串。

import binascii

hex_str = "48656c6c6f20576f726c64"
bin_str = binascii.unhexlify(hex_str)
ascii_str = bin_str.decode("utf-8")

print(ascii_str)

输出:

Hello World
Java

在 Java 中,可以使用 javax.xml.bind.DatatypeConverter 类中的 parseHexBinary 函数将十六进制字符串转换为二进制数组,然后使用 new String 函数将二进制数组转换为 ASCII 字符串。

import javax.xml.bind.DatatypeConverter;

String hexStr = "48656c6c6f20576f726c64";
byte[] binArr = DatatypeConverter.parseHexBinary(hexStr);
String asciiStr = new String(binArr, "UTF-8");

System.out.println(asciiStr);

输出:

Hello World
C++

在 C++ 中,可以使用 std::stringstream 将十六进制字符串转换为二进制数组,然后使用 std::string 构造函数将二进制数组转换为 ASCII 字符串。

#include <sstream>
#include <string>

std::string hexStr = "48656c6c6f20576f726c64";
std::stringstream ss;
ss << std::hex;

for (size_t i = 0; i < hexStr.size(); i += 2) {
    std::string hexByte = hexStr.substr(i, 2);
    ss.clear();
    ss.str(hexByte);
    int byte;
    ss >> byte;
    asciiStr += (char) byte;
}

std::cout << asciiStr << std::endl;

输出:

Hello World

以上是几种不同编程语言实现将十六进制值字符串转换为 ASCII 值字符串的方法。根据需求和语言特性选择适合的方法可以提高程序的效率和可读性。