Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
端口C';s fread(&;struct,…)到Python_Python_C_Struct_Porting - Fatal编程技术网

端口C';s fread(&;struct,…)到Python

端口C';s fread(&;struct,…)到Python,python,c,struct,porting,Python,C,Struct,Porting,嘿,我真的在为这个挣扎。我正在尝试将其他人的一小段代码移植到Python,这就是我所拥有的: typedef struct { uint8_t Y[LUMA_HEIGHT][LUMA_WIDTH]; uint8_t Cb[CHROMA_HEIGHT][CHROMA_WIDTH]; uint8_t Cr[CHROMA_HEIGHT][CHROMA_WIDTH]; } __attribute__((__packed__)) frame_t; frame_t frame; while

嘿,我真的在为这个挣扎。我正在尝试将其他人的一小段代码移植到Python,这就是我所拥有的:

typedef struct
{
  uint8_t Y[LUMA_HEIGHT][LUMA_WIDTH];
  uint8_t Cb[CHROMA_HEIGHT][CHROMA_WIDTH];
  uint8_t Cr[CHROMA_HEIGHT][CHROMA_WIDTH];
} __attribute__((__packed__)) frame_t;

frame_t frame;

 while (! feof(stdin))
  {
    fread(&frame, 1, sizeof(frame), stdin);

    // DO SOME STUFF
  }
稍后我需要像这样访问数据:frame.Y[x][Y]

因此,我用Python创建了一个类“frame”,并插入了相应的变量(frame.Y、frame.Cb、frame.Cr)。 我曾尝试按顺序将数据从Y[0][0]映射到Cr[MAX][MAX],甚至打印出了正在运行的C结构,但我没有想到将数据放入其中的方法。我已经为此奋斗了一夜,今晚必须回到军队,所以任何立即的帮助都是非常受欢迎和感激的

谢谢

您必须使用python标准模块。
从其文档中(添加):

此模块执行转换 在Python值和C结构之间 表示为Python字符串。它使用 将字符串(如下所述)格式化为 结构布局的简洁描述 C结构和预期的 与Python值的转换这个 可用于处理二进制数据 存储在文件中或来自网络 连接,以及其他来源


注意:由于您最后读取的数据是统一格式的,您也可以使用该模块,然后用Python“重新构造”数据,但我认为最好的方法是使用struct。

谢谢,当我注意到一个似乎毫无意义的错误,它扭曲了我的所有输出时,我几乎成功了。我的解决方案现在与我第一次陈述的相同——从Y[0][0]顺序写入Cr[MAX][MAX]。谢谢您的帮助。@user287669:在stackoverflow上标记问题“已解决”的正确方法是接受旁边带有复选标记图标的答案。当你问未来的问题时,这也会让你看起来像一个铁环一样。