PYTHON字符串转数字,数字转字符串;数字转bytes,bytes转数字;字符串转bytes,bytes转字符串。数字表达字符串

部署运行你感兴趣的模型镜像
字符串str转数字:
  • float(str)
  • int(str)
数字num转字符串
  • str(num)
a ='1234'
print('a = ',a)
print(type(a))
b = int(a)
print('b = ',b)
print(type(b))
c = float(a)
print('c = ',c)
print(type(c))
d = str(b)
print('d = ',d)
print(type(d))
f = 1.234
ff = str(f)
print('ff = ',ff)
print(type(ff))

在这里插入图片描述

数字num转bytes
  • 需将num转为str,再利用codec的encode函数,将str转为bytes:encode(str(num))
bytes转数字
  • int(bytes)
  • float(bytes)
from codecs import encode, decode

b = b'1.234'
print('b = ',b)
print(type(b))
c = float(b)
print('c = ',c)
print(type(c))
d = str(c)
e = encode(d)
print('e = ',e)
print(type(e))
f = decode(e)
print('f = ',f)
print(type(f))

在这里插入图片描述

字符串转bytes

方法1

from codec import encode,decode
encode(str)

方法2

bytes(str,'UTF-8')

bytes转字符串

方法1

from codec import encode,decode
decode(bytes)

方法2

str(bytes,'UTF-8')

数字表达字符串

cmd ='\x02\x73\x54\x49\x20\x03\x0a'

在这里插入图片描述

综合例子

在这里插入图片描述
在这里插入图片描述

SPLIT = '\x20'
LF ='\x0a'

def controller_resp(cmd,statuses,data = None):
    '''
    cmd: 接收到的控制器命令,用于返回给控制器,字符串
    statuses: 对靶装置状态信息,用于返回给控制器,字符串
    data: 发送给控制器的数据,用于返回给控制器,注意:data为列表!!里面的数据为str类型!!
    '''
    data_str = ''
    # 生成要发送的数据:数据+校验和+分割符(0x20)
    if data != None:
        for i in data:
            data_str = data_str + i + 'P'+SPLIT #字符串

    statuses_part = statuses + 'P'+SPLIT #字符串

        #if self.__check_cmd(cmd,self.CONTROLLER_LOGOUT):
            #cmd[:-2]表明去掉最后的'\n'
            # 命令行+状态部分+ 数据部分
    if cmd[-1] == '\n' and cmd[-2] == chr(0x03):
        command = cmd[:-2] + statuses_part + data_str + LF
    elif cmd[-1] == chr(0x03):
        command = cmd[:-1] + statuses_part + data_str + LF
    
    return command #返回命令行字符串
cmd ='\x02\x73\x4c\x44\x20\x03\x0a'
print(cmd)
#cmd = bytes(cmd,'UTF-8')

print(cmd[-1] == '\n')
statuses = '00'

result = controller_resp(cmd,statuses)
print(result)
for i in result:
    
    print(ord(i),i)

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们需要将ASCII字符串换为数字。这里有两种常见情况: 1. 整个字符串表示一个数字(例如:"123" -> 123) 2. 字符串中的每个字符换为其ASCII码(例如:"abc" -> [97, 98, 99]) 我将分别处理这两种情况。 情况1:整个字符串换为数字 我们可以使用内置函数int()或float(),根据字符串内容决定。 情况2:字符串中每个字符换为ASCII码 可以使用ord()函数对每个字符进行换。 由于问题没有明确,我将提供两种可能的解决方案。 示例代码: 情况1:字符串表示数字 s = "123" num = int(s) # 如果字符串是整数 num = float(s) # 如果字符串是浮点数 情况2:将字符串的每个字符换成ASCII码的列表 s = "abc" ascii_list = [ord(c) for c in s] 但是,如果问题要求的是将整个字符串解释为某种编码的数字(比如大整数),那么情况1就是正确的。 例如,字符串"1234"可以换为整数1234。 然而,有时候“ASCII字符串数字”可能指的是将每个字符的ASCII码拼接成一个大的整数。比如: "AB" -> 'A'的ASCII码是65,'B'是66 -> 可以换为6566,或者0x4142(十六进制)等。 因此,我需要更明确的问题。但根据常见情况,我猜测可能是第二种情况(每个字符ASCII码)或者第一种(整个字符串数字)。 由于问题描述较短,我将提供两种换的代码,并解释。 如果用户想要的是将整个字符串当作一个数字(前提是字符串只包含数字字符),则用第一种。 如果用户想要得到每个字符的ASCII码,则用第二种。 同时,还有一种可能是将整个字符串换为一个长整数(每个字节作为一个数字)。例如,我们可以将整个字符串的每个字符的ASCII码按顺序组合成一个大的整数,通常用字节串的方式。 例如:对于字符串"AB",我们可以这样: num = int.from_bytes(s.encode('ascii'), byteorder='big') # 得到16706(因为65*256+66=16706) 或者 byteorder='little' -> 66*256+65=16961 因此,我提供三种换方式: 方式1:整个字符串换为整数或浮点数(如果字符串数字字符串) 方式2:将字符串的每个字符换为ASCII码,形成列表 方式3:将整个字符串视为字节串,换为一个大整数 现在,根据问题“python ascii字符串 数字”,我无法确定具体是哪种,所以我会给出这三种的解释和代码,并让用户根据需求选择。 但考虑到问题中明确提到“ascii字符串”,可能更倾向于方式2或方式3。方式1通常用于数字字符串,而数字字符串也是ASCII字符串的子集。 我将分别写出示例代码: 假设我们有一个ASCII字符串s。 1. 整个字符串数字(适用于数字字符串) try: num = int(s) # 如果字符串是整数形式 except ValueError: try: num = float(s) # 如果字符串是浮点数形式 except ValueError: print("字符串不是数字字符串") 2. 每个字符ASCII码的列表 ascii_list = [ord(c) for c in s] 3. 整个字符串成一个长整数(按字节) # 首先确保字符串是ASCII,如果不是ASCII,使用其他编码可能会出错 byte_rep = s.encode('ascii') # 得到字节串 # 按大端序(big endian)换成整数 num_big = int.from_bytes(byte_rep, byteorder='big') # 按小端序(little endian)换成整数 num_little = int.from_bytes(byte_rep, byteorder='little') 现在,我将在回答中给出这三种情况的代码和解释。 </think>在 Python 中,将 ASCII 字符串换为数字主要有两种常见场景,下面分别给出解决方案和原理解释: --- ### 1. **整个字符串为单个数字** 当字符串内容表示数字时(如 `"123"`),可使用 `int()` 或 `float()` 直接换: ```python s = "123" num = int(s) # 字符串整数 print(num, type(num)) # 输出: 123 <class 'int'> s2 = "45.67" num2 = float(s2) # 字符串浮点数 print(num2, type(num2)) # 输出: 45.67 <class 'float'> ``` **原理**: - `int()` 或 `float()` 会解析字符串的字符序列,将其解释为整数或浮点数。 - 要求字符串必须完全由数字组成(允许符号 `+/-` 和小数点 `.`),否则会抛出 `ValueError`。 --- ### 2. **每个字符为 ASCII 码值** 将字符串中的每个字符换为其对应的 ASCII 整数值: ```python s = "Hello" ascii_list = [ord(char) for char in s] # 列表推导式逐个换 print(ascii_list) # 输出: [72, 101, 108, 108, 111] # 或使用 map 函数 ascii_list_map = list(map(ord, s)) print(ascii_list_map) # 输出: [72, 101, 108, 108, 111] ``` **原理**: - `ord(char)` 函数返回字符 `char` 的 Unicode 码点(ASCII 字符的码点与 ASCII 值相同)。 - 由于 ASCII 范围是 0-127,此方法适用于所有 ASCII 字符。 --- ### 错误处理示例 若字符串包含非数字字符时,捕获异常: ```python s = "12a3" try: num = int(s) except ValueError: print(f"错误:'{s}' 不是有效的整数") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值