繁体   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