java - 在 Java 中复制 C 结构填充

标签 java c compiler-construction padding

根据 here ,C 编译器会在将结构写入二进制文件时填充值。正如链接中的示例所说,在编写这样的结构时:

struct {
 char c;
 int i;
} a;

对于二进制文件,编译器通常会在 char 和 int 字段之间留下一个未命名的、未使用的空洞,以确保 int 字段正确对齐。

我如何使用不同的语言(在我的例子中是 Java)创建二进制输出文件(在 C 中生成)的精确副本?

是否有一种自动方法可以在 Java 输出中应用 C 填充?或者我是否必须通过编译器文档来了解它是如何工作的(顺便说一下,编译器是 g++)。

最佳答案

不要这样做,它很脆弱,会导致对齐和字节序错误。

对于外部数据,最好根据字节显式定义格式,并使用移位和掩码(而不是 union !)编写显式函数在内部和外部格式之间进行转换。

关于java - 在 Java 中复制 C 结构填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/839407/

相关文章:

java - 如何使用带有协同设计工具的 Mac Developer Certificate 对 Java 应用程序进行签名?

java - 如何将数据库值放入数组列表中

java - Flying Saucer 字体粗细不显示

java - 从未使用过的变量

c - 如何在我的自研操作系统中控制显卡?

c - 导致安全漏洞的缓冲区溢出示例

c - header 中函数名称之前应有初始值设定项。 C

生成 .exe 文件的 Java 编译器选项

c - 这会产生什么输出?还请解释一下

c++ - 编译器如何确定何时对 RVO 是安全的?