Objective c 在目标C中,如何将int转换为big-endian 32位数字?

Objective c 在目标C中,如何将int转换为big-endian 32位数字?,objective-c,ios4,websocket,Objective C,Ios4,Websocket,我试图在ObjC中实现WebSocket握手(76),但我不知道(因为我是C和ObjC新手)如何获得以下信息: 列表项 我有两个号码 155712099 173347027 我需要把它们转换成32位的大端数字 将它们连接成字符串 并用ASCII表示结果字符串 非常感谢您的帮助 Objective-C基于C,通常有C标准库可用,因此您可以使用标准htonl函数。然后,您可以使用正常的字符串函数进行字符串操作。因为您使用的是iPhone SDK,所以您可以访问核心基础。使用: uint32_t

我试图在ObjC中实现WebSocket握手(76),但我不知道(因为我是C和ObjC新手)如何获得以下信息:

  • 列表项
  • 我有两个号码

    155712099
    173347027
    
  • 我需要把它们转换成32位的大端数字

  • 将它们连接成字符串
  • 并用ASCII表示结果字符串

  • 非常感谢您的帮助

    Objective-C基于C,通常有C标准库可用,因此您可以使用标准
    htonl
    函数。然后,您可以使用正常的字符串函数进行字符串操作。

    因为您使用的是iPhone SDK,所以您可以访问核心基础。使用:

    uint32_t myInt32Value = ...;
    uint32_t myInt32AsABigEndianNumber = CFSwapInt32HostToBig(myInt32Value);
    

    有趣。他们说这些功能只在Mac OS X上可用,但说它们是从iOS 2.0开始提供的。那么在这种情况下,哪一个更好呢?CFSwapInt32HostToBig还是htonl?它们做同样的数学运算。我更喜欢
    CFSwapInt32HostToBig()
    ,因为它是内联的(而
    htonl()
    extern
    ),因为这个名字更好地描述了我试图完成的任务(即,交换到big-endian,而不是网络顺序——除非我尝试做一些与网络相关的事情,在这种情况下,我会使用
    htonl()
    )@失范:事实上,文档似乎并没有将这些功能仅限于Mac OS X。无论如何,他们从第一天起就可以在iOS上使用,并在那里被完全记录。@ JonathanGrynspan:请参阅链接页面的底部:“注意,核心基金会的字节交换功能仅在Mac OS X上可用。”我只是不明白如何在NSLog中看到二进制的32位数字。Fx,NSLog(@“%?”,number)设置一个断点,然后右键单击变量视图中的变量,然后查看“VariableName”的内存没有用于以二进制显示数字的
    printf()
    -样式说明符。如果你需要这个功能,你必须自己动手。@Joe,谢谢,好主意@乔纳森:有没有关于我怎么做的提示?链接或smth。