问题标签 [packed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
endianness - 如何解释来自 F1 2020 游戏 UDP 数据包的 python 字节字符串?
对于我正在努力解决的问题,标题可能非常不正确。
我试图以我理解的方式解释我从赛车游戏中收到的数据包,但老实说,我真的不知道我在看什么,或者搜索什么来理解它。我在这里收到的数据包信息: https ://forums.codemasters.com/topic/54423-f1%C2%AE-2020-udp-specification/?tab=comments#comment-532560
我正在使用 python 来打印数据包,这是输出的一个片段,我不明白如何解释。
收到消息:b'\xe4\x07\x01\x03\x01\x07O\x90.\xea\xc2!7\x16\xa5\xbb\x02C\xda\n\x00\x00\x00\xff\x01\x00 \x03:\x00\x00\x00 A\x00\x00\xdcB\xb5+\xc1@\xc82\xcc\x10\t\x00\xd9\x00\x00\x00\x00\x00\x12\x10\x00\ x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$tJ\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ x00\x00\x00\x01
我对编码很陌生,不确定下一步是什么,所以朝着正确的方向轻推将有助于加载,谢谢。
这是python代码:
r - 如何防止 R 自动调整绘图大小?
我正在根据我的数据制作一系列压缩圆图。我已将所有图中的所有圆圈设置为具有相同的半径。但是,如果其中一个图只有一个圆圈,则 R 将自动调整该圆圈的大小以占据整个绘图窗口。有许多圆圈的图将自动变小。
我的问题是我想导出我所有的压缩圆图并将它们组合成一个更大的图,但所有的圆都需要相同的大小。在这些图的代码中,所有圆都具有相同的精确半径。所以我认为问题源于 R 出于某种原因自动调整圆圈大小。有没有办法禁用它?
c - 除了第一个之外,所有压缩字段的 C 结构与压缩结构不同吗?
在其通用类型属性中,GCC 提供packed
:
此属性附加到
struct
[...] 类型定义,指定放置其每个成员(除了零宽度位字段)以最小化所需的内存。这 相当于指定packed
每个成员的属性。
此外,根据 C18 标准(§ 6.7.2.1, 15-17):
在结构对象中,非位域成员 [...] 的地址按声明顺序递增。指向结构对象的指针,经过适当转换,指向其初始成员 [...],反之亦然。结构对象内可能有未命名的填充,但不是在其开头。[...] 结构末尾可能有未命名的填充 [...]。
因此,鉴于结构的开头没有填充,packed
在其第一个成员上使用似乎是多余的。反过来(这就是我的问题所在),在除第一个packed
成员之外的所有成员上使用似乎不必要地复杂,并且等同于在结构本身上使用(我们假设所有成员都是整数类型)。packed
但是,我多次遇到类似于以下的代码:
我无法弄清楚为什么作者更喜欢这样的斗争
packed
第一个成员会改变的结构本身的对齐问题吗?它是否来自我没有考虑过的填充和对齐以外的其他东西(例如旧版本的 GCC 中的怪癖)?另一方面,如果它们是等效的,我怎么能确定它,因为文档是恕我直言,在这里没有什么帮助?
虽然这不是它们等效的有效证据,但我尝试struct
为各种架构(x86、x86_64、Aarch64)编译这两个 s,它们似乎总是共享相同的布局。
python - Python Sockets 发送 Uint16 和 Uint32
我需要通过具有以下结构的 python 套接字发送请求:
我的服务器和客户端都在工作,但我真的不知道如何编码和解码这种数据以通过套接字发送它。谢谢!
c++ - 打包结构中的未打包结构是否自动打包?
GCC 会自动打包打包结构中的解包结构吗?
换句话说,__packed__
属性会自动传播到嵌套结构吗?
也就是说:
c++ - 我该如何完成这个例子?
您好,我正在尝试一个示例,但我不知道如何遵循。我正在尝试设置一个将所有相同的类/类型保存在一起的地图(或其他一些结构)。为此,我的方法是在我的类 ( ResourceManager_t
) 的构造函数中获取所有参数,并且每次我向地图添加新资源时,检查是否可以添加该资源,因为在 Ctor 上已接受。
但我不知道如何填写std::vector<>
以提供任何类型/类。我试过了,std::any
但这似乎不是一个正确的解决方案。
我知道我的问题不是很清楚,但我已经尝试了很多东西。我想要的例子
如果您想要一个编译/执行示例,我已经完成它std::vector<int>
只是为了检查所有其他参数https://godbolt.org/z/hrb1afjxv
java - 创建新对象与在基元中编码数据
假设我想存储(整数)x/y 值,这被认为更有效:将其存储在一个原始值中,如 long(非常适合,由于 sizeof(long) = 2*sizeof(int))使用 bit-像移位、掩码或创建点类这样的操作?
请记住,我想创建和存储许多(!)这些点(循环)。使用类时会有性能问题吗?我更喜欢存储在原始数据中而不是存储在类中的唯一原因是垃圾收集器。我猜在循环中生成新对象会过多地触发 gc,对吗?
c - 用标准(便携式)C 方法替换紧凑结构的“__attribute__ ((packed))”
将几个值转换为用于无线电传输的字节串必须避免不需要的字节。在 ARM 目标(32 位)上使用 GCC,我使用“属性((打包))”。该指令是基于 GCC 的(正如我在此处某处读到的),因此通常不可移植 - 我更喜欢。例子:
(*) 值将使用没有 ((packed)) 属性的 4 个字节,而不是根据需要使用一两个字节。用于传输的字节访问:
使用 vs_u.b[i] 。
- 处理时间在这里并不重要,因为传输速度要慢得多。
- 这里也不考虑 Endian,但在某些情况下可能会应用不同的 C 编译器。
- 对此任务的较早帖子提供了一些见解,但可能同时在 C ?c) 中改进了打包和对齐功能。
C 中是否有更便携的解决方案来执行此任务?
c - ARM GCC 打包结构警告的地址
在我的代码中,我有这样的东西:
当我使用 arm-none-eabi-gcc 编译它时,我收到警告
.\test.c:11:2:警告:将压缩的“test_struct_t”指针(对齐 1)转换为“uint32_t”{aka 'long unsigned int'} 指针(对齐 4)可能会导致未对齐的指针值 [- Waddress-of-packed-member]
谁能告诉我为什么会这样?获取压缩结构成员的地址当然是危险的。但是整个结构本身应该总是对齐的,不是吗?