如何在 Objective-C 中从 CFReadStream 中仅提取前 2 个字节的数据以进行 iPhone 编程

发布于 2024-08-30 03:50:28 字数 465 浏览 1 评论 0原文

  1. 如何从 Objective-C 的读取流中读取数据?下面的代码将告诉我从流中读取了多少字节,但是我如何知道从流中读取了哪些数据?

    CFIndex cf = CFReadStreameRead(流、缓冲区、长度);
    
  2. 如何在 Objective-C 中仅提取读取流中的前 2 个字节数据?例如,如果这是来自流的数据:

    <前><代码>017MacApp

    第一个字节有 0,第二个字节有 17。

    如何将 0 和 17 提取到字节数组中?

我知道下面的代码会将字节数组返回给 int 值。

((b[0] & 0xFF) << 8)+ (b[1] & 0xFF);

但是如何将 0 放入 b[0] 并将 17 放入 b[1] 呢?

  1. How can I read the data from read stream in Objective-C? The code below would give me how many bytes are read from stream, but how can I know what data is read from stream?

    CFIndex cf = CFReadStreameRead(Stream, buffer, length);
    
  2. How can I extract only the 1st 2bytes of data in the read stream in Objective-C? For example, if this is the data from stream:

    017MacApp
    

    1st byte has 0 in it, and 2nd byte has 17 in it.

    How do I extract 0 and 17 into byte array?

I know that the below code would give me back the byte array to int value.

((b[0] & 0xFF) << 8)+ (b[1] & 0xFF);

but how to put 0 into b[0] and 17 into b[1]?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空气里的味道 2024-09-06 03:50:28
uint8_t buffer[2];
CFIndex cf = CFReadStreamRead(Stream, buffer, 2);
if (cf == 2)
{
    uint8_t firstByte = buffer[0];
    uint8_t secondByte = buffer[1];
}
else
{
    // cf == -1 => error, cf == 0 => end of file, cf == 1 => you need to call again to get the second byte
}

这是 苹果文档

uint8_t buffer[2];
CFIndex cf = CFReadStreamRead(Stream, buffer, 2);
if (cf == 2)
{
    uint8_t firstByte = buffer[0];
    uint8_t secondByte = buffer[1];
}
else
{
    // cf == -1 => error, cf == 0 => end of file, cf == 1 => you need to call again to get the second byte
}

Here is the Apple doc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文