【问题标题】:16 bit hex and variables16 位十六进制和变量
【发布时间】:2012-01-21 23:38:51
【问题描述】:

我正在尝试将以下十六进制发送到 NSOutputstream 0x0000000e000000010000001000003014

我可以使用以下代码发送 8 位十六进制:

long myhex = 0x0000000e00000001;    

NSData *data = [[NSData alloc] initWithBytes:&myhex length: sizeof(myhex)];
[outputStream write:[data bytes] maxLength:[data length]];

问题是当我尝试这个时:

long myhex = 0x0000000e000000010000001000003014;

它说“整数常量对于它的类型来说太长了”

我似乎无法弄清楚除了这个十六进制值之外的整数类型。

【问题讨论】:

    标签: objective-c variables hex 16-bit


    【解决方案1】:

    与其尝试找到足够长的整数类型,不如只创建一个字节数组并发送它。您最终不仅无法为您希望发送的数据找到足够长的类型,而且不同平台上整数中的字节顺序也存在差异。

    因此,要以任意顺序发送任意长的数据,请使用字节数组(unsigned char,或者最好是 uint8_t 来自 stdint.h),例如:

    uint8_t dataBytes[] = { 0x00, … , 0x0e, … 0x30, 0x14 };
    NSData *data = [[NSData alloc] initWithBytes:dataBytes length:sizeof(dataBytes)];
    

    【讨论】:

    • 这样好多了。谢谢你。这实际上解决了我在反转字节顺序时遇到的另一个问题。太棒了!!
    猜你喜欢
    • 2014-07-31
    • 2018-08-26
    • 2019-01-09
    • 2011-02-19
    • 2014-11-20
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多