小编Mad*_*Lee的帖子

如何从命令行在 Python 中初始化 ctypes 数组

因此,我的任务是编写一个 Python 脚本,该脚本访问 Win 32 DLL 以执行某些功能。该脚本需要从命令行接受参数然后输出其他参数。

我正在使用 ctypes,因为这是我发现的将参数传递给 Win 32 DLL 方法的最简单方法,但我很幸运能够从命令行获得固定的值数组,我通过这样做解决了这个问题:

seed = (ctypes.c_ubyte * 12)(
    ctypes.c_ubyte(int(sys.argv[3], 16)), ctypes.c_ubyte(int(sys.argv[4], 16)),
    ctypes.c_ubyte(int(sys.argv[5], 16)), ctypes.c_ubyte(int(sys.argv[6], 16)),
    ctypes.c_ubyte(int(sys.argv[7], 16)), ctypes.c_ubyte(int(sys.argv[8], 16)),
    ctypes.c_ubyte(int(sys.argv[9], 16)), ctypes.c_ubyte(int(sys.argv[10], 16)),
    ctypes.c_ubyte(int(sys.argv[11], 16)), ctypes.c_ubyte(int(sys.argv[12], 16)),
    ctypes.c_ubyte(int(sys.argv[13], 16)), ctypes.c_ubyte(int(sys.argv[14], 16))
)
Run Code Online (Sandbox Code Playgroud)

但这无论如何都不是动态的,我尝试在数组初始化中使用 for 循环来执行此数组初始化,但没有成功。

我对 Python 完全陌生,发现用其他语言完成我认为简单的任务相当困难(不是抨击该语言,只是发现它不像其他语言那样直观地完成此类任务)。

那么,有没有一种方法可以简化这个数组的初始化,其中条目本身的数量可能是可变的?

我搜索了又搜索,但没有找到解决我问题的方法。

所有正面和负面的评论都将受到赞赏,并且都将始终作为一种学习经历:)

python ctypes python-2.5

3
推荐指数
1
解决办法
3510
查看次数

如何重用结构体的通用代码?

我想重用结构代码。例如:

use std::fmt::Display;

struct CommonStruct<T: Display> {
    // could have more fields
    data: T
}

struct A<T: Display> {
    com: CommonStruct<T>,
    age: i32
}

struct B<T: Display> {
    com: CommonStruct<T>,
    name: String
}

impl<T: Display> A<T> {
    // could be more common functions
    fn print_data(&self) {
        // could be more complicated
        println!("data: {}", self.com.data);
    }
}

impl<T: Display> B<T> {
    // could be more common functions
    fn print_data(&self) {
        // could be more complicated
        println!("data: {}", self.com.data);
    }
}

fn …
Run Code Online (Sandbox Code Playgroud)

rust

3
推荐指数
1
解决办法
1478
查看次数

有没有办法检查结构体是否有字段并检查其类型?

我正在尝试编写一个测试来确定是否struct A有一个属性a及其类型是i32.

pub struct A {
    a: i32,
}

#[test]
pub fn test_A() {
    assert!(A.hasattr("a"));
    assert_is_type!(A.a, i32);
}
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
4631
查看次数

标签 统计

rust ×2

ctypes ×1

python ×1

python-2.5 ×1