gpt4 book ai didi

python - 需要帮助才能在 Python 中处理超过 2 个或更多字节的字符

转载 作者:行者123 更新时间:2023-11-28 18:38:24 25 4
gpt4 key购买 nike

我正在通过编写一个将字符串转换为二进制并再次转换回字符串的小程序来学习 Python 中的位和字节。暂时我只有一个转换为二进制的函数。

string = 'word'

for c in word:
convertToBinary(c) #Function that converts to binary

输出:

01110111
01101111
01110010
01100100

现在我想编写一个 fromBinary() 函数,将二进制转换为字符串。然而,我仍然坚持如何处理超过 1 个字节的字符,例如 'å'

string = 'å'

for c in word:
convertToCBinary(c)

输出:

    11000011
10100101

当我有一个包含不同长度(以字节为单位)的字符的字符串时,这就成了一个问题。

string = 'åw'

    for c in word:
convertToCBinary(c)

输出:

11000011    #first byte of 'å'
10100101 #second byte of 'å'
01110111 #w

我在想我可以将字节重新组合成一个,但是我真的很困惑如何确定要连接哪些字节。我怎样才能创建一个函数来识别哪些字节一起构成一个字符?

最佳答案

没那么难。当然有一个系统 - 否则没有程序可以打印或编辑像 Ñáñez 这样的名字......

每个字节的高位表示该字节的状态:

1) 如果第 7 位为 0,则它只是 ASCII (*0*1110111 = w)

2) 如果您在顶部找到 11,则表示后面有更多字节(以及数量):

   *110*xxxxx *10*xxxxxx
*1110*xxxx *10*xxxxxx *10*xxxxxx
*11110*xxx *10*xxxxxx *10*xxxxxx *10*xxxxxx
*111110*xx *10*xxxxxx *10*xxxxxx *10*xxxxxx *10*xxxxxx
*1111110*x *10*xxxxxx *10*xxxxxx *10*xxxxxx *10*xxxxxx *10*xxxxxx

11000011 #first byte of 'å'
10100101 #second byte of 'å'

因此:

*110* means 1 byte follows:
*110*00011 *10*100101

00011 + 100101 = 000 11100101 = the unicode value for å (0x00e5)

注意:我认为您的示例中的 w 有问题。

关于python - 需要帮助才能在 Python 中处理超过 2 个或更多字节的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30052285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com