簡體   English   中英

如何在Python中將字符串轉換為字節,並在字節中添加值?

[英]How to convert string to byte in Python, and add the values in the byte?

我正在使用 Python 2.7。

我得到了這個函數的文檔字符串:

def test(a, b):
    ''' takes two bytes, returns the the bytes when the two bytes are added up
    (bytes, bytes) -> bytes
    j = 0
    k = j + b[0]

我嘗試這樣做(有人告訴我這將是該函數的有效輸入並遵循文檔字符串):

test(b"2402", b"testing"):

但這引發了一個錯誤說

TypeError: unsupported operand type(s) for +: 'int' and 'str'

根據我的理解,字節由 1 和 0(即整數)組成。 那么我不應該能夠添加字節的每個索引嗎?

示例: test(b"123", b"testing") a 和 b 將是字節(由 1 和 0 組成)。 我應該能夠將數字相加,讓它等於 x,然后返回 b"x"。

編輯:函數本身不需要解決,我只是用一個例子來說明我想要的。 我只想知道如何在 Python 2.7 中將字符串轉換為字節。

當您使用 python 2 時,請使用

bytearray("2402") 

或者

"2402".encode('utf-8')

如果你決定切換到 python 3.x,試試這個:

test(bytes("2402", 'utf-8'), bytes("testing", 'utf-8'))

要將字符串轉換為字節或將字節轉換為字符串,您還應該提供編碼,如果您有字節,則無法使用 str 獲得正確的結果,但您應該使用如下編碼:

b"abcde".decode("utf-8") 

您應該考慮另一件事,即對字節進行索引不會返回一個字節,而是返回整數,試試這個:

>>>type(b[0])
<class 'int'>

因為 bytes 和 bytearray 對象是整數序列(0 到 255 之間)

該函數在 python3 中有效,因為在 py3 中,對於字節對象bb[0]將是一個整數:

>>> type(b'abc'[0])
<class 'int'>

但是當您使用 python2 時, b[0]將是一個 str:

>>> type(b'abc'[0])
<type 'str'>

不允許將 str 和 int 添加在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM