java 字符 b,字符串文字前的'b'字符做什么?

显然,以下是有效的语法

my_string = b'The string'

我想知道:

字符串前面的b字符是什么意思?

使用它有什么作用?

在什么情况下可以使用它?

我在SO上找到了一个相关的问题 ,但是这个问题是关于PHP的,它指出b用于表示字符串是二进制的,与Unicode相反,Unicode是使代码与PHP版本兼容的必需< 6,移植到PHP 6时。我认为这不适用于Python。

我确实在Python网站上找到了有关以相同语法使用u字符将字符串指定为Unicode的文档 。 不幸的是,它在该文档的任何地方都没有提到b字符。

另外,出于好奇,是否还有比b和u更多的符号可以执行其他操作?

#1楼

这是一个示例,其中不存在b会在Python 3.x中TypeError异常

>>> f=open("new", "wb")

>>> f.write("Hello Python!")

Traceback (most recent call last):

File "", line 1, in

TypeError: 'str' does not support the buffer interface

添加b前缀将解决此问题。

#2楼

除了其他人所说的以外,请注意unicode中的单个字符可以由多个字节组成 。

unicode的工作方式是采用旧的ASCII格式(7位代码,看起来像0xxx xxxx),并添加了多字节序列 ,其中所有字节均以1(1xxx xxxx)开头,以表示超出ASCII的字符,因此Unicode 向后-与ASCII 兼容 。

>>> len('Öl') # German word for 'oil' with 2 characters

2

>>> 'Öl'.encode('UTF-8') # convert str to bytes

b'\xc3\x96l'

>>> len('Öl'.encode('UTF-8')) # 3 bytes encode 2 characters !

3

#3楼

从服务器端,如果我们发送任何响应,它将以字节类型的形式发送,因此它将在客户端显示为b'Response from server'

为了摆脱b'....'只需使用以下代码:

服务器文件:

stri="Response from server"

c.send(stri.encode())

客户端文件:

print(s.recv(1024).decode())

然后它将打印Response from server

#4楼

您可以使用JSON将其转换为字典

import json

data = b'{"key":"value"}'

print(json.loads(data))

{“核心价值”}

烧瓶:

这是烧瓶的一个例子。 在终端行上运行此命令:

import requests

requests.post(url='http://localhost(example)/',json={'key':'value'})

在flask / routes.py中

@app.route('/', methods=['POST'])

def api_script_add():

print(request.data) # --> b'{"hi":"Hello"}'

print(json.loads(request.data))

return json.loads(request.data)

{'核心价值'}

#5楼

在Python 2中,前缀'b'或'B'被忽略; 它表示文字应在Python 3中变成字节文字(例如,当代码自动由2to3转换时)。 前缀“ u”或“ b”后可以带有前缀“ r”。

字节字面量始终以“ b”或“ B”为前缀; 它们产生字节类型而不是str类型的实例。 它们只能包含ASCII字符; 数值等于或大于128的字节必须用转义符表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值