写一个字符串转十六进制ASCII码的Python脚本,不能转换的字符打出?就行。
时间: 2023-06-26 21:06:14 浏览: 186
可以使用Python内置的`ord()`函数将字符转换为对应的ASCII码,然后使用`hex()`函数将十进制数转换为十六进制字符串。如果字符无法转换为ASCII码,则打印出问号。
下面是一个示例代码:
```python
def str_to_hex_ascii(s):
hex_ascii = ''
for c in s:
try:
# 尝试将字符转换为十六进制ASCII码
hex_ascii += hex(ord(c))[2:].zfill(2)
except TypeError:
# 如果字符无法转换为ASCII码,则打印出问号
hex_ascii += '?'
return hex_ascii
# 示例用法
s = 'Hello, 你好!'
print(str_to_hex_ascii(s)) # 输出:48656c6c6f2c20e4bda0e5a5bdefbc81
```
在上述代码中,`hex()`函数返回的十六进制字符串中包含前缀`'0x'`,因此需要使用切片`[2:]`去掉前缀。同时,使用`zfill()`函数将不足两位的十六进制数左侧补零。
相关问题
帮我写一个十六进制转换成ASCII码的Python脚本
可以使用Python内置的`binascii`模块来实现十六进制转换成ASCII码。
以下是示例代码:
```python
import binascii
hex_str = "48656c6c6f20576f726c64" # 十六进制字符串
# 将十六进制字符串转换成bytes类型
hex_bytes = bytes.fromhex(hex_str)
# 使用binascii模块将bytes类型转换成ASCII码字符串
ascii_str = binascii.b2a_hex(hex_bytes).decode()
print(ascii_str) # Hello World
```
首先,我们将十六进制字符串转换成`bytes`类型的数据,然后使用`binascii`模块中的`b2a_hex()`函数将其转换成ASCII码字符串。最后使用`decode()`方法将其解码成Unicode字符串。
16进制转ascii码脚本 python
在Python中,你可以使用内置函数`chr()`和`ord()`来实现十六进制数转换ASCII码。`ord()`函数用于将字符转换为其对应的ASCII值,而`chr()`函数则接受一个整数作为参数并返回相应的字符。下面是一个简单的脚本示例:
```python
def hex_to_ascii(hex_string):
# 将十六进制字符串分割成单个字符
hex_chars = [hex_string[i:i+2] for i in range(0, len(hex_string), 2)]
# 对每个十六进制字符转换为ASCII码,并连接结果
ascii_codes = ''.join(chr(int(char, 16)) for char in hex_chars)
return ascii_codes
# 示例用法
hex_input = "48656c6c6f" # 十六进制表示的 "Hello"
ascii_output = hex_to_ascii(hex_input)
print(f"十六进制 {hex_input} 转换为ASCII码为: {ascii_output}")
阅读全文