|
|
1
1
一般来说,只有当数据通过某个物理接口(例如,通过网络或文件)传输时,endianness才重要,因为它可能来自具有不同本机endianness的平台。如果你试图用指针投射来做“聪明”的事情,也会发生这种情况,例如
从您的示例中不清楚原始数据来自何处,但我假设它是从某个文件或某个地方读取的。实际上,处理无端性转换的最佳位置是尽可能靠近接口,因此在您的例子中,是读取文件并填充结构的例程。通常情况下,这可以用预处理器αIFIFS来解决,例如C(我知道这是C++问题,但我相信你能找到一个适当的等价物):
等等。 如果隔离到接口例程的转换,其余代码就变成了endian不可知论者。 |
|
|
2
1
最好首先保存适合目标平台的数据。也就是说,创建数据文件时,endian会交换所有字段。 撇开这一点不谈,我认为您的DXT加载程序应该自动处理这一问题,因为目前DXT通常是在Windows机器上构建的,而Windows机器是小endian。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |