gpt4 book ai didi

ios - 我可以定义从 NSData 读取的字节顺序吗?

转载 作者:行者123 更新时间:2023-11-29 01:16:46 27 4
gpt4 key购买 nike

我在 Android 设备上写了一些文件,它以大端字节序写入字节。现在我尝试用 iOS 读取这个文件,我需要它们在小端。

我可以做一个for循环

int temp;
for(...) {
[readFile getBytes:&temp range:NSMakeRange(offset, sizeof(int))];
target_array[i] = CFSwapInt32BigToHost(temp);
// read more like that
}

然而,在我可以存储它之前读取每个值并转换它感觉很愚蠢。我可以告诉 NSData 我想要以特定字节顺序读取的值,以便我可以直接将它存储在应该存储的位置吗?

(并节省一些时间,因为数据可能非常大)

我还担心某些数据类型更改时会出错,我忘记使用 16 而不是 32 交换。

最佳答案

不,您需要交换每个值。 NSData 只是一系列没有值(value)或意义的字节。理解含义的是您的应用,因此您的代码逻辑必须根据需要交换每组字节。

数据可以填充各种不同大小的值。 8 位值、16 位值、32 位值等,以及字符串数据或根本不需要任何排序的字节流。 NSData 可以包含这些值的任意组合。

考虑到所有这些,没有简单的方法来告诉 NSData 字节需要以特定的字节序处理。

例如,如果您的数据只是以特定字节顺序存储的 32 位整数值,并且您想提取一个字节数组,请创建一个执行转换的辅助类。

关于ios - 我可以定义从 NSData 读取的字节顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com