簡體   English   中英

如何將 numpy.int8 轉換為字符串?

[英]How to convert numpy.int8 to string?

下面的代碼嘗試從 128 位長的 numpy 數組中獲取 ascii 碼。

st=""
ans_final=""

for i in range(len(key)):
  j=0
  while(j<8):
    st=st+ (key[i])
    j+=1
    i+=1
  ans=b_to_ascii(st)
  ans_final=ans_final+ans

在這段代碼中,我計划將一個 8 位長的字符串傳遞給 b_to_ascii function,它將返回它的 ascii 值,然后將 append 所有的 ascii 值一起得到一個存儲在 ans_final 中的 8 個 ascii 值的字符串。

但我收到這個錯誤

TypeError                                 Traceback (most recent call last)
<ipython-input-30-5929c83ea390> in <module>()
      6   j=0
      7   while(j<8):
----> 8     st=st+ (key[i])
      9     j+=1
     10     i+=1

TypeError: can only concatenate str (not "numpy.int8") to str

說這里的key是這樣存儲的-->

array([1,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1], dtype=int8)

所以在轉換為 ascii 后,最終答案將是abc

在代碼的第一次迭代中,我想要做的是,我想將一個字符串st=11000010傳遞給 function b_to_ascii ,它將返回a將存儲在ans中並將附加到字符串ans_final的字符串。 類似地,我們將迭代接下來的 8 位和剩余的 8 位以獲得bc ,因此ans_final將變為abc

那么誰能幫助我如何將 NumPy.int8 轉換為字符串?

您可以使用numpy.packbits function( arr是您的位數組):

result = ''.join(map(chr, np.packbits(arr)))

也許在理解中進行字符串轉換,然后str.join()方法:

for i in range(0, len(key), 8):
    s = ''.join(str(nbr) for nbr in key[i:i+8])
    ans = b_to_ascii(s)

暫無
暫無

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

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