gpt4 book ai didi

ios - NSArray 和字节顺序

转载 作者:行者123 更新时间:2023-11-29 12:59:24 25 4
gpt4 key购买 nike

我有这段代码

NSMutableData *mData = [NSMutableData data];

uint16_t bytes = 0x9F21;
[mData appendBytes:&bytes length:sizeof(bytes)];

当我用 p/x 打印字节时,我得到

0x9F21

如果我尝试 po mData 我得到

<219f>

这是一个与字节顺序相关的问题,我看到如果我转换字节顺序,mData 会正确存储字节

如果我用这段代码打印 mData 对象,我会得到预期的值

NSMutableData *mData = [NSMutableData data];

uint16_t bytes = CFSwapInt16HostToBig(0x9F21);
[mData appendBytes:&bytes length:sizeof(bytes)];

这意味着 appendBytes 需要在小端和大端架构上都采用大端排序?

最佳答案

你没有说你想对数据做什么,但是你应该只在从/写入外部媒体时转换字节序,比如网络连接和数据字节序明确定义的文件。这个过程称为 marshalling .

数据一直在您的应用程序中并且需要被操作,您需要将数据保持在其原始形式,这实际上被视为 big-endian(即做类似 bytes >> 8 的事情 将产生 0x9f)。

When i print the bytes with p/x i get

0x9F21

那是以原生格式打印 16 位无符号整数(LLDB 知道它是 16 位类型)

If i try to po mData i get

<219f>

这是打印字节流,因为这是 NSData 对象的性质。它表明您的 native 架构是小尾数法,但这不应该很重要。

关于ios - NSArray 和字节顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189830/

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