草庐IT

zval_struct

全部标签

Python & Ctypes : Passing a struct to a function as a pointer to get back data

我查看了其他答案,但似乎无法让它发挥作用。我试图在DLL中调用一个函数来与SMBus设备进行通信。此函数接受一个指向结构的指针,该结构具有一个数组作为其字段之一。所以...在C中:typedefstruct_SMB_REQUEST{unsignedcharAddress;unsignedcharCommand;unsignedcharBlockLength;unsignedcharData[SMB_MAX_DATA_SIZE];}SMB_REQUEST;我想我必须在DLL填充数据数组时设置地址、命令和block长度的值。需要这个结构的函数把它当作一个指针SMBUS_APIintSmBu

Java 相当于 Python 的 struct.pack?

在Java中是否有任何等效于Python的struct.pack的函数可以让我像这样打包和解包值?pump_on=struct.pack("IIHHI",0,0,21,96,512) 最佳答案 我想你可能想要的是ByteBuffer:ByteBufferpump_on_buf=...pump_on_buf.putInt(0);pump_on_buf.putInt(0);pump_on_buf.putShort(21);pump_on_buf.putShort(96);pump_on_buf.putInt(512);byte[]pum

python - 如何将 python time.struct_time 对象转换为 ISO 字符串?

我有一个Python对象:time.struct_time(tm_year=2013,tm_mon=10,tm_mday=11,tm_hour=11,tm_min=57,tm_sec=12,tm_wday=4,tm_yday=284,tm_isdst=0)我需要获得ISOstring:'2013-10-11T11:57:12Z'我该怎么做? 最佳答案 使用time.strftime()可能是最简单的:iso=time.strftime('%Y-%m-%dT%H:%M:%SZ',timetup)演示:>>>importtime>>>t

python - 使用python中的struct模块打包和解包可变长度数组/字符串

我正在尝试掌握Python3中二进制数据的打包和解包。它实际上并不难理解,除了一个问题:如果我有一个可变长度的文本字符串并想以最优雅的方式打包和解包呢?据我所知,我只能直接解压缩固定大小的字符串吗?在这种情况下,有没有什么优雅的方法可以绕过这个限制而不用填充大量不必要的零? 最佳答案 struct模块只支持固定长度的结构。对于可变长度字符串,您的选择是:动态构造你的格式字符串(一个str在传递给pack()之前必须被转换成一个bytes):s=bytes(s,'utf-8')#Orotherappropriateencodingst

c++ - volatile struct = struct 不可能,为什么?

structFOO{inta;intb;intc;};volatilestructFOOfoo;intmain(void){foo.a=10;foo.b=10;foo.c=10;structFOOtest=foo;return0;}这不会编译,因为structFOOtest=foo;产生错误:error:bindingreferenceoftype'constFOO&'to'volatileFOO'discardsqualifiers如何在C++(C++11之前)中将volatilestruct复制到另一个struct中?很多人建议只删除volatile,但在这种情况下我不能这样做,因

c++ - 为什么 C 需要 "struct"关键字而不是 C++?

我一直对这里发生的事情感到有些困惑:#includeintmain(){timevaltv;tv.tv_sec=1;for(;;){select(0,0,0,0,&tv);printf("%s\n","HelloWorld!");}}对不起,如果没有编译,只是写它作为一个简单的例子。除非我在使用structtimeval之前添加关键字struct,否则这样的代码不会在gcc下编译。另一方面,g++可以很好地处理它。这是C和C++处理结构的方式之间的差异,还是仅仅是编译器的差异?(我非常面向C++,像这样在C语言中使用struct总是让我有些困惑)。 最佳答案

c++ - struct声明中的冒号是什么意思,如:1, :7, :16,或:32?

以下C++代码是什么意思?unsignedchara:1;unsignedcharb:7;我猜它创建了两个字符a和b,它们都应该是一个字节长,但我不知道“:1”和“:7”部分的作用。 最佳答案 1和7是位大小,用于限制值的范围。它们通常出现在结构和union中。例如,在某些系统上(取决于char宽度和打包规则等),代码:typedefstruct{unsignedchara:1;unsignedcharb:7;}tOneAndSevenBits;创建一个8位值,a为1位,b为7位。通常在C中用于访问“压缩”值,例如4位nybble,

c++ - Boost::Tuples vs Structs 返回值

我正试图了解元组(感谢@litb),使用它们的常见建议是返回>1值的函数。这是我通常会使用结构的东西,在这种情况下我无法理解元组的优势-对于最终懒惰的人来说,这似乎是一种容易出错的方法。Borrowinganexample,我会用这个structdivide_result{intquotient;intremainder;};使用元组,您将拥有typedefboost::tupledivide_result;但是,如果不阅读您正在调用的函数的代码(或注释,如果您愚蠢到相信它们),您将不知道哪个int是商,反之亦然。好像有点……structdivide_result{intresults

c++ - "anonymous structs"是标准的吗?而且,真的,他们*是*什么?

MSDNreckons匿名结构在C++中是非标准的:AMicrosoftCextensionallowsyoutodeclareastructurevariablewithinanotherstructurewithoutgivingitaname.Thesenestedstructuresarecalledanonymousstructures.C++doesnotallowanonymousstructures.Youcanaccessthemembersofananonymousstructureasiftheyweremembersinthecontainingstructur

c++ - `struct X typedef` 与 `typedef struct X` 的含义是什么?

我在现有代码库中有以下(工作)代码,用于在C和C++之间共享的包含文件,在MSVC(2010)和WindowsDDK上编译:structX{USHORTx;}typedefX,*PX;还有:enumMY_ENUM{enum_item_1,enum_item_2}typedefMY_ENUM;据我所知,正确的定义应该是这样的:typedefstruct{USHORTx;}X,*PX;下面的表格有什么目的吗?我错过了什么吗? 最佳答案 事实上,typedef和typedef是否有效只是来自语言语法定义。typedef被归类为存储类说明符