在python中将ctypes结构转换为bytearray

2024-01-11

有没有办法转换 Ctypes 结构,包括指向字节数组的指针?

class SRamAccess(ctypes.Structure):
    _fields_ = [('channel', ctypes.c_uint), ('offset', ctypes.c_uint), ('len', ctypes.c_uint), ('data', ctypes.c_char_p)]

只需将其传递给bytearray():

>>> import ctypes
>>> class SRamAccess(ctypes.Structure):
...  _fields_ = [('channel', ctypes.c_uint), ('offset', ctypes.c_uint), ('len', ctypes.c_uint), ('data', ctypes.c_char_p)]
...
>>> s = SRamAccess(1,2,3,b'blah')
>>> bytearray(s)
bytearray(b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xf0 .\x1a\xed\x01\x00\x00')
#           \______________/\______________/\______________/\______________/\________________________/
#                   1               2               3         padding          pointer64 

请注意,“blah”不是结构的一部分。最后 8 个字节(64 位 Python)是指针地址,前面的 4 个字节用于填充,以将 8 字节指针与结构中的 8 字节偏移量对齐。

您需要结构中的一个数组才能查看数组内容:

>>> class SRamAccess(ctypes.Structure):
...  _fields_ = [('channel', ctypes.c_uint), ('offset', ctypes.c_uint), ('len', ctypes.c_uint), ('data', ctypes.c_char * 5)]
...
>>> s = SRamAccess(1,2,3,b'blah')
>>> bytearray(s)
bytearray(b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00blah\x00\x00\x00\x00')
#           \______________/\______________/\______________/\______/\__________/
#                   1               2               3         blah    padding

请注意,最后 3 个字节是填充,以使整个结构的大小成为 4 字节的倍数,因此此类结构的数组使 4 字节整数在 4 字节边界上保持对齐。

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

在python中将ctypes结构转换为bytearray 的相关文章

  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 创建 xyz 海拔数据的曲面图

    我正在尝试用 python 创建一座山的表面图 其中我有一些 xyz 数据 最终结果应该类似于that https i stack imgur com rKQV0 png 该文件的格式如下 616000 0 90500 0 3096 712
  • 在Python中将大文件(25k条目)加载到dict中很慢?

    我有一个大约有 25000 行的文件 它是 s19 格式的文件 每行就像 S214780010 00802000000010000000000A508CC78C 像这样的事情怎么样 我做了一个测试文件 只有一行S21478001000802
  • 我可以同时打开两个 Tkinter Windows 吗?

    可以同时打开2个窗口吗 import tkinter as Tk import random import math root Tk Tk canvas Tk Canvas root background image Tk PhotoIma
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe
  • 在Python中使用os.makedirs创建目录时出现权限问题

    我只是想处理上传的文件并将其写入工作目录中 该目录的名称是系统时间戳 问题是我想以完全权限创建该目录 777 但我不能 使用以下代码创建的目录755权限 def handle uploaded file upfile cTimeStamp
  • 美丽的汤刮 - 登录凭据不起作用

    尝试使用登录凭据抓取页面 payload email gmail com password urls login url https www spotrac com signin url https www spotrac com nba
  • 如何使 Django 自定义管理命令参数不再需要?

    我正在尝试在 django 中编写自定义管理命令 如下所示 class Command BaseCommand def add arguments self parser parser add argument delay type int

随机推荐

  • 如何在Python中并行处理列表? [复制]

    这个问题在这里已经有答案了 我写了这样的代码 def process data create file using data all data1 data2 data3 我想在我的所有列表上并行执行处理函数 因为它们正在创建小文件 所以我不
  • npm - EPERM mkdir:Windows 上不允许操作

    我正在使用 Node js 11 13 0 和 npm 6 0 以上 我尝试通过以下命令在 Windows 中设置 React js 应用程序 npx 创建反应应用程序新应用程序 输出如下 错误 EPERM 不允许操作 mkdir C Us
  • 非法配置:不再支持编译iOS 7之前的IB文档

    我最近更新到XCode 9 当我构建应用程序时它说 非法配置 我的 pod 文件中的一些故事板 我尝试重新创建故事板文件 但没有帮助 XCode 9 将不支持为低于 7 的 iOS 版本构建的故事板 尝试改变构建用于 in 文件检查器到更高
  • 带有默认参数的Python函数参数[重复]

    这个问题在这里已经有答案了 我是Python新手 我想定义一个函数from and to日期 如果我用一个参数调用该函数 它应该将该参数视为to日期 如果我传递两个参数 它应该分配from and to date 我定义如下 def ini
  • 从更新函数触发操作

    有一个希望很简单的问题 当我在更新函数中收到操作 A 时 我想返回一个执行某些操作的任务 然后生成操作 B 更新函数再次接收该操作 B 据我了解 从 Update 返回的任何效果都将由 startapp 执行 但似乎什么也没有发生 这是一个
  • 你能在 TypeScript 中创建嵌套类吗?

    有没有办法在 TypeScript 中嵌套类 例如 我想像这样使用它们 var foo new Foo var bar new Foo Bar 在现代 TypeScript 中 我们有类表达式 您可以使用它来创建嵌套类 例如 您可以执行以下
  • django sekizai {% addtoblock %} 标签无法正常工作

    我正在尝试实现 django sekizai 应用程序 它正在复制我添加的 js 文件 基本模板 load sekizai tags render block my js 使用此基础的模板 load sekizai tags div add
  • 如何获取 AngularJS 中可用模块的列表?

    在定义 Angular 模块时 我定义了我的依赖项 如下所示 var myModule angular module MyModuleName Dep1 Dep2 Dep3 每个依赖项都有自己的依赖项 指令 控制器等 有没有办法询问 Ang
  • 如何在网格中显示菜单 - ExtJS 5?

    我正在尝试在网格面板中显示菜单 我有一个操作列来显示一个图标 我想应用一个效果 当鼠标悬停在该图标上时 将显示一个菜单 我如何在 extjs 5 中做到这一点 我的行动栏是这样的 xtype actioncolumn width 70 it
  • Chronos 不运行作业

    我已经为每个服务使用 Docker 映像设置了 Mesos 集群 包括 Marathon 和 Chronos 我使用的 Docker 镜像如下 动物园管理员 jplock zookeeper 3 4 5 https registry hub
  • 将所有文件和文件夹从一个目录复制到另一个目录 PHP

    我有一个名为 mysourcedir 的目录 它包含一些文件和文件夹 所以我想使用 PHP 将此目录中的所有内容复制到 Linux 服务器上的其他 目标文件夹 function full copy source target if is d
  • SQL Server年份

    将 FINANCIALYEAR 声明为 varchar 30 将 FINALFINANCIALYEAR 声明为 int SELECT FINANCIALYEAR CONVERT VARCHAR YEAR GETDATE 2 CONVERT
  • 使用 MySqlDataAdapter 更新不起作用

    我正在尝试使用 MySqlDatAdapter 来更新 MySql 表 但是 该表永远不会更新 我以前这样做过 但使用的是 SQL Server 我的代码中还缺少其他特定于 MySql 的内容吗 DataTable myTable new
  • OpenMP“master”编译指示不得包含在“parallel for”编译指示内

    为什么英特尔编译器不允许我指定 openmp 中的某些操作parallel for块应该仅由主线程执行吗 如果没有这种功能 我该如何实现我想要实现的目标 我想做的是通过并行回调更新进度条 long num items computed 0
  • 如何在 emacs-ess 中从 R 内部访问 bash 环境变量

    在我的 bashrc 中 我有以下行 export SETTINGS home user settings xml 如果我在 bash 中加载 R 我可以使用Sys getenv功能 Sys getenv SETTINGS home use
  • sqlplus:加载共享库时出错:libsqlplus.so:无法打开共享对象文件:没有这样的文件或目录

    请提出解决此问题的解决方案 下达命令时 sqlplus nolog 发生的错误 sqlplus error while loading shared libraries libsqlplus so cannot open shared ob
  • 如何使用Luigi持续更新目标文件?

    我最近开始玩Luigi 我想了解如何使用它不断地将新数据附加到现有的目标文件中 想象一下 我每分钟都会 ping 一个 api 来检索新数据 因为一个Task仅在以下情况下运行Target尚不存在 一个简单的方法是通过当前参数来参数化输出文
  • 如何在 Google Maps API 中的完全相同的坐标处渲染多个标记?

    我在同一条街上有多个地址 门牌号相同 但公寓号不同 Google 地图地理编码服务 v2 对于许多地址来说并没有达到公寓级别的精度 只是返回了与它们完全相同的地理编码坐标 所以问题是 当我去显示它们时 无论放大多少 都只显示一个图钉 我的问
  • 将 ActionScript 日期从 UTC 转换为本地时间(以纪元为单位)

    这是我的后续行动上一个问题 https stackoverflow com questions 11632421 creating actionscript date object from mysql utc timestamp stri
  • 在python中将ctypes结构转换为bytearray

    有没有办法转换 Ctypes 结构 包括指向字节数组的指针 class SRamAccess ctypes Structure fields channel ctypes c uint offset ctypes c uint len ct