- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C 中创建了一个函数,它接受一个 int 大小和一个 char *buffer 作为参数。我想使用 ctypes 从 python 调用此函数并传入 python byteArray。我知道首先你必须将 C 文件编译成一个共享库(.so 文件)并使用 ctypes 来调用该函数。这是我到目前为止的代码。
加密.c:
#include <stdio.h>
void encrypt(int size, unsigned char *buffer);
void decrypt(int size, unsigned char *buffer);
void encrypt(int size, unsigned char *buffer){
for(int i=0; i<size; i++){
unsigned char c = buffer[i];
printf("%c",c);
}
}
void decrypt(int size, unsigned char *buffer){
for(int i=0; i<size; i++){
unsigned char c = buffer[i];
printf("%c",c);
}
}
这是 python 文件:
import ctypes
encryptPy = ctypes.CDLL('/home/aradhak/Documents/libencrypt.so')
hello = "hello"
byteHello = bytearray(hello)
encryptPy.encrypt(5,byteHello)
encryptPy.decrypt(5,byteHello)
基本上我想从 python 调用 C 方法,传递一个 python 字节数组,并让它遍历数组并打印每个元素
最佳答案
Mark 的回答非常有帮助,因为它将字符数组传递给 C 函数,这是 OP 真正想要的,但如果有人在这里找到他们真正想要传递字节数组的方式,an approach seems to be to build a ctypes.c_char backed by the memory of your byte-array, and pass that .
我这里的例子忽略了 Mark 推荐的参数声明,这看起来确实是个好主意。
import ctypes
# libFoo.c:
# (don't forget to use extern "C" if this is a .cpp file)
#
# void foo(unsigned char* buf, size_t bufSize) {
# for (size_t n = 0; n < bufSize; ++n) {
# buf[n] = n;
# }
# }
fooLib = ctypes.cdll.LoadLibrary('./lib/libFoo.dylib')
ba = bytearray(10)
char_array = ctypes.c_char * len(ba)
fooLib.foo(char_array.from_buffer(ba), len(ba))
for b in ba:
print b
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
关于python - 如何使用 ctypes 将 byteArray 传递给以 char* 作为参数的 C 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37422662/
我有以下代码,适用于文本文件,但不适用于 pdf 文件。我的文件包含英语和希腊语字符。我尝试将 pdf 文件转换为 byteStream 并将 byteStream 转换为 String 格式,以便将
我有一些大的二进制文件,我需要在其中搜索特定的字节序列,例如: find_bytes = bytearray(base64.b16decode('a226fb42')) with open(filen
如何将 bytearray 值分配给面板背景图像。如果有人有想法或经验,请帮助我克服这个问题。简要经验: 我有面板控制,想加载从 webservice 获取的图像作为背景图像。所以我使用了 setst
我的 ByteArray 值为 avroBinaryValue ,架构名称值为 String schemaName ,上次修改日期值为 long 的 lastModifiedDate 。 byte[]
我试图在开始时将一个字节数组插入到另一个字节数组中。这是我正在努力完成的一个简单示例。 import struct a = bytearray(struct.pack(">i", 1)) b = by
我正在尝试将 long 和 bytearray 连接到另一个 bytearray。 我尝试过这样的: byte[] value1= new byte[16]; byte[] value2= new b
我有一个任务,我必须在数据库中读取和保存图像。 我正在使用 C#.net Webservice 和 SQlserver2008 数据库,并将图像保存为 varbinary 格式。 我想知道 如何从本地
我在创建 ByteArray var 时遇到了一些问题,其中它的元素也是 ByteArray,我不知道是不是可能先?以及如何? 最佳答案 ByteArray 顾名思义,就是一个字节数组。如果您想保留多
我有三个 bytearray,长度为 40000。我想将字节数组 1 的字节数组索引 0,1、bytearaay2 的索引 0,1 和 bytearray3 的索引合并到 40000 长度。 像这样:
我认为这是一个新手类型的问题,但我很理解这一点。 我可以找到很多关于如何将字符串转换为各种语言的字节数组的帖子。 我不明白的是逐个字符发生了什么。我知道屏幕上显示的每个字符都由一个数字表示,例如它的
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 这是我的( Code Golf )挑战: 取两个字节数组并确定第二个数组是否是第一个数组的子字符
我在字节流方面做了很多工作,所以我理解这个概念——有些字节表示比其他字节更高的数值。 在阅读维基上的定义时,我变得非常困惑。 当我看到“Big-endian”或 BIG + END 这个词时,我期望最
我正在使用 Kafka 发送生产和消费消息。 生产很好,使用 制作人。 消费时,我使用下面的代码(取自示例)但我得到的每条记录只有 8 个字节(代码下方的示例输出)。 有没有一种方法可以让消费者简单地
我有很多时间创建缩略图,然后将它们转换为字节数组。我尝试了三种方法,所有 3 次都出现错误。 第一个是使用Bitmap.GetThumbnailImage,我过去用过,然后直接保存到Response.
如何将存储文件分配给 ByteArray? var file = await openPicker.PickSingleFileAsync(); 最佳答案 这里是一个使用文件选择器的示例,获取存储文件
我需要在Kotlin中创建一个包含混合类型的字节数组。 具体来说,我需要编写如下内容: 0, 1, 0x02, 1, "me@emailaddr.com" 使用Kotlin实现BLE的特性。 显然,我
当我运行这个: class SomeTest { fun howToMockByteArray() { val bytes = Mockito.mock(ByteArray::
D中ubyte[]的最大大小有限制吗? 在this线程 我遇到内存不足错误,无法理解是驱动程序问题还是 ubyte[] 大小限制? 最佳答案 D中任意数组的最大长度为size_t.max。但是,由于
如果只有一个写入器将字节附加到一个bytearray,并且多个读取器从中读取数据,那么是否有可能一个或多个读取器读取既不在扩展之前也不在扩展之后的数据? 例如,如果bytearray中的旧数据是012
请耐心听我说;我是系统管理员而不是开发人员。下面的代码对我来说效果很好。但是当我将其分成两个文件以便类位于一个文件中而逻辑位于另一个文件中时,我收到一条错误,指出 data[0] 是 str 并且不支
我是一名优秀的程序员,十分优秀!