如果我使用mmap
来写uint32_t
,我会遇到大端/小端约定的问题吗?特别是,如果我在大端机器上写一些数据mmap
'ed,当我试图在小端机器上读取数据时,我会遇到问题吗?
发布于 2009-06-21 23:20:43
如果你正在使用mmap,你可能会关心速度和效率。你基本上有几个选择。
此外,如果您执行诸如提供长度前缀或文件偏移量之类的操作,您可能会有32位和64位指针的混合。32位平台不能创建大于4 GB的mmap视图,因此您不太可能支持大于4 GB的文件大小。像rrdtool这样的程序采用了这种方法,并且在64位平台上支持更大的文件大小。这意味着,如果您在文件中使用平台指针大小,那么您的二进制文件将不能跨平台兼容。
如果你一开始就试图创建一种独立于平台的数据格式,你通常会犯错误,并且必须在以后返回并修复这些错误。这意味着修复数据转换代码中的错误将破坏所有平台上的现有客户端。
发布于 2009-06-21 23:19:23
是。
mmap
将原始文件数据映射到进程地址空间。它不知道原始数据代表什么,更不用说尝试为您转换数据了。如果要将相同的文件映射到具有不同字节顺序的体系结构上,则必须自己进行任何必要的转换。
但这真的取决于您的特定需求。
https://stackoverflow.com/questions/1025783
复制