在 Python 中将位转换为字节

2023-12-30

我正在尝试在 Python 3.x 中将位字符串转换为字节字符串。在每个字节中,位是从高位到低位填充的。如有必要,最后一个字节用零填充。位字符串最初存储为布尔值或整数(0 或 1)的“集合”,我想返回 0-255 范围内的整数“集合”。我所说的集合是指列表或类似的对象,而不是字符串:例如,下面的函数返回一个生成器。

到目前为止,我能得到的最快速度如下:

def bitsToBytes(a):
    s = i = 0
    for x in a:
        s += s + x
        i += 1
        if i == 8:
            yield s
            s = i = 0
    if i > 0:
        yield s << (8 - i)

我尝试了几种替代方法:使用枚举、构建列表而不是生成器、通过“(s

不过,我想知道是否有更快的解决方案。特别是,是否有一个库例程可以更快地完成工作,最好是在标准库中?


输入/输出示例

[] -> []
[1] -> [128]
[1,1] -> [192]
[1,0,0,0,0,0,0,0,1] -> [128,128]

在这里,我用列表展示了示例。发电机就好了。然而,strong 不会,然后就需要在类似列表的数据和字符串之间来回转换。


消耗 8 元块中的位并忽略异常的最简单策略:

def getbytes(bits):
    done = False
    while not done:
        byte = 0
        for _ in range(0, 8):
            try:
                bit = next(bits)
            except StopIteration:
                bit = 0
                done = True
            byte = (byte << 1) | bit
        yield byte

Usage:

lst = [1,0,0,0,0,0,0,0,1]
for b in getbytes(iter(lst)):
    print b

getbytes是一个生成器并接受一个生成器,也就是说,它可以很好地处理大型且可能无限的流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中将位转换为字节 的相关文章

随机推荐

  • Tomcat 应用程序 Profiler for Eclipse indigo

    我尝试在 eclipse indigo 中安装 TPTP 分析器 但是它不起作用我收到以下错误 Eclipse TPTP 不支持您的平台 综合代理 控制器将被禁用 要在受支持的主机上进行分析 请 在该主机上安装并使用独立代理控制器 我不知道
  • hadoop 在运行我的程序时显示以下消息。这是什么意思?

    我正在运行 hadoop 程序 收到以下消息 这是什么意思 我需要担心这个消息吗 INFO hdfs DFSClient Exception in createBlockOutputStream java io EOFException P
  • 将 Swift Package 添加到自定义框架

    创建具有 SPM 依赖项的框架相当新鲜 因此 我创建了一个新的框架项目 添加了一些类 文件以及 SPM 依赖项 CocoaLumberjack 记录器 框架编译良好 当我寻找我计划嵌入到其他项目中的框架产品时 我看到它位于我的产品文件夹中
  • Jquery:获取带有完整路径的图标

    我想使用 Jquery 从网站获取网站图标的链接 我只是使用 link rel shortcut icon attr href 而且效果很好 但是 我并不总是有一条完整的路径 例如我可以有类似的东西 http mywebsite com m
  • C 中 char[] 和 char * 之间的区别[重复]

    这个问题在这里已经有答案了 C 中 char 和 char 之间有什么区别 据我所知 两者都创建了 make s 指向字符数组的指针 然而 char s hello s 3 a printf n s n s prints helao whi
  • 如何在不同的Android应用程序之间双向传递数据?

    最简单的方法是什么将字符串变量从一个应用程序传递到另一个应用程序并返回值 我可以访问这两个应用程序的源代码 但它必须是两个不同的应用程序 我尝试使用 startActivityForResult 但这似乎只适用于同一应用程序的活动之间 当从
  • 使用GSON反序列化非泛型类型的ArrayList

    编辑 空指针是由于格式错误的 json 造成的 Hi 我正在尝试将 json 数据反序列化为 Restaurant 对象的 ArrayList 如下所示 受我在https sites google com site gson gson us
  • ASP.NET MVC / IIS 7.5:500 内部服务器错误(仅限静态内容)

    之前在 IIS 7 5 下运行的 ASP NET MVC 项目 但早期版本和非 MVC 站点上可能存在问题 已开始返回 500 内部服务器错误 但仅限于静态处理程序处理的内容 图像 页面等 由 MVC 本身通过控制器处理工作正常 我知道是什
  • 如何创建 Cucumber 数据表?

    我想使用 Java 而不是 Gherkin 手动设置 Cucumber 数据表 在 Gherkin 中 我的表格如下所示 h1 h2 v1 v2 到目前为止 我的 Java 看起来像这样 List
  • 当 MockRestServiceServer 设置为 ExpectedCount.manyTimes() 时,预计不再有请求

    我的弹簧集成应用程序有以下测试类 该测试类成功单独启动 SpringBootTest classes BackupTestDefinition class ActiveProfiles test dev RunWith SpringRunn
  • 我可以将模型及其关联之一转换为 YAML 格式吗?

    我想以 YAML 格式打印 ActiveRecord 模型以进行调试 目前我调用model to yaml 但它不会返回模型的关联 如何将模型及其关联之一转换为 YAML 格式 可以先转成json 默认的 ActiveRecordas js
  • 从查询集值访问 django 模板上的外键

    我似乎找不到我做错了什么 这是我的设置 from django db import models from django conf import settings Simple model to handle blog posts clas
  • 如何处理链接器错误 - 错误 - “找不到 -lgcc”

    这是我的生成文件 task0 main o numbers o add o gcc m32 g Wall o task0 main o numbers o add o main o main c gcc g Wall m32 ansi c
  • 模糊的启动器图标

    我正在尝试向我的 Android 应用程序添加启动器图标 但安装应用程序时的分辨率似乎有问题 我正在使用的设备具有 XHDPI 屏幕 因此我正在使用 96x96 px 图像进行测试 我使用Android Studio中的Image Asse
  • 更改 UIPageViewController 自己的 PageController 关于点的颜色

    嘿 我正在使用 UIPageViewController 来控制我所在的页面和滚动 我知道只需添加以下两个函数就可以显示页面控制器 NSInteger presentationCountForPageViewController UIPag
  • Python 3.6 没有名为 pip 的模块

    我刚刚通过运行在 Fedora 25 64 位 上安装了 Python 3 6dnf install python36我不能使用任何模块 Python 3 5 可以使用 例如 PyCharm 抱怨安装工具未安装 我也可以运行 python3
  • 如何正确将 iso-8859-1 转换为 utf8?

    我需要将响应流写入文件 该流包含一个编码页面 iso 8859 1 这是我的代码 using TextWriter writer new StreamWriter tmpFilePath using TextReader reader ne
  • 有没有办法在 UIScrollView 中模拟scrollViewDidScrollToBottom?

    我想做一个无限滚动 on a UITableViewController 我正在使用scrollViewDidScroll 方法来检查 contentOffset 但是我无法深入了解偏移量底端的滚动视图 有什么建议么 提前致谢 假设 con
  • 如何在c#中设置我想用作应用程序图标的ico?

    我在属性中设置的图标在任务栏和应用程序窗口中可见 但资源管理器中的应用程序图标不同 您设置的应用程序图标是否在不同的图标大小下具有不同的图像 这就是您在资源管理器中看到差异的原因 要对此进行测试 请在 Visual Studio 中打开您的
  • 在 Python 中将位转换为字节

    我正在尝试在 Python 3 x 中将位字符串转换为字节字符串 在每个字节中 位是从高位到低位填充的 如有必要 最后一个字节用零填充 位字符串最初存储为布尔值或整数 0 或 1 的 集合 我想返回 0 255 范围内的整数 集合 我所说的