首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将整数视为Python中的字节数组?

如何将整数视为Python中的字节数组?
EN

Stack Overflow用户
提问于 2008-08-13 17:46:41
回答 6查看 4.7K关注 0票数 15

我正在尝试解码Python ()函数的结果。根据Python文档,这将返回:

包含其pid和退出状态指示的元组:16位数字,其低字节是终止进程的信号号,其高字节是退出状态(如果信号号为零);如果生成核心文件,则设置低字节的高位。

如何解码退出状态指示(这是一个整数)以获得高字节和低字节?具体而言,如何实现以下代码段中使用的解码函数:

代码语言:javascript
复制
(pid,status) = os.wait()
(exitstatus, signum) = decode(status) 
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-08-13 17:56:34

这能做你想做的事:

代码语言:javascript
复制
signum = status & 0xff
exitstatus = (status & 0xff00) >> 8
票数 14
EN

Stack Overflow用户

发布于 2008-08-13 18:52:36

要回答您的一般问题,可以使用位操纵

代码语言:javascript
复制
pid, status = os.wait()
exitstatus, signum = status & 0xFF, (status & 0xFF00) >> 8

但是,也有用于解释退出状态值的内建函数

代码语言:javascript
复制
pid, status = os.wait()
exitstatus, signum = os.WEXITSTATUS( status ), os.WTERMSIG( status )

另请参阅:

  • os.WCOREDUMP()
  • os.WIFCONTINUED()
  • os.WIFSTOPPED()
  • os.WIFSIGNALED()
  • os.WIFEXITED()
  • os.WSTOPSIG()
票数 13
EN

Stack Overflow用户

发布于 2009-03-26 14:52:42

您可以使用结构模块将int分解为无符号字节的字符串:

代码语言:javascript
复制
import struct
i = 3235830701  # 0xC0DEDBAD
s = struct.pack(">L", i)  # ">" = Big-endian, "<" = Little-endian
print s         # '\xc0\xde\xdb\xad'
print s[0]      # '\xc0'
print ord(s[0]) # 192 (which is 0xC0)

如果您将其与数组模块结合起来,您可以更方便地这样做:

代码语言:javascript
复制
import struct
i = 3235830701  # 0xC0DEDBAD
s = struct.pack(">L", i)  # ">" = Big-endian, "<" = Little-endian

import array
a = array.array("B")  # B: Unsigned bytes
a.fromstring(s)
print a   # array('B', [192, 222, 219, 173])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档