python str与bytes之间的转换

本文介绍了如何将Python中的str类型参数转换为bytes类型,以便在调用WindowsAPI时能够正确传递。通过示例代码演示了从str到bytes的两种转换方法,并提供了一个UDP应用实例,说明了在不同Python版本中参数转换的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用python调用windows api的时候出了点问题,ctypes.c_char_p()这个函数,只接受bytes型或是int型的数据,但是我的传入参数却是str类型的,所以需要把str转换成bytes型的。

转换的方法如下:

    bytes object   b = b"example"   
    str object   s = "example"    
    #str to bytes  
     bytes(s, encoding = "utf8")   
    #bytes to str  
     str(b, encoding = "utf-8")  
    #an alternative method   
    #str to bytes  
     str.encode(s)   
    #bytes to str   
    bytes.decode(b)

下面是一个udp的例子,其中的 socket.sendall()的输入参数是需要bytes,在python2.x中支持str,所以在我们使用3.x平台时候需要将其转化为bytes,所以上面的转换就可以使用了:

'''
Created on 2013-4-6

@author: Administrator
'''
import socket,sys

host=sys.argv[1]
textport=sys.argv[2]

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
try:
    port=int(textport)
except ValueError as e:
    port=socket.getservbyname(textport,'udp')
s.connect((host,port))
print("Enter data to transmit:")
data=sys.stdin.readline().rstrip()
bdata=bytes(data,encoding="utf-8")
#str.encode(data)
s.sendall(bdata)
print("looking for replies;")

while 1:
    buf=s.recv(2048)
    if not len(buf):
        break
    sys.stdout.write(buf)
    
    

下面是一个不错的博客,有一些python方面的介绍!

http://www.cnblogs.com/rollenholt/category/313456.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值