C# 目标比特转换器等效

C# 目标比特转换器等效,c#,.net,c,objective-c,C#,.net,C,Objective C,我想知道是否有一个与.Net的BitConverter.GetBytes()方法等价的Objective C 例如,在C#中,我可以这样写: byte[]lengthPrefix=位转换器.GetBytes(message.length) 目标C中的等价物是什么 一些示例代码将不胜感激 提前感谢。Sin Objective-C的根是C,您可以使用位运算符来完成类似的操作 COCOA/COCOA-TOUCH框架中没有任何东西可以自动为您实现这一点(如.NET的位转换器)。如果您不需要特定的endi

我想知道是否有一个与.Net的BitConverter.GetBytes()方法等价的Objective C

例如,在C#中,我可以这样写:


byte[]lengthPrefix=位转换器.GetBytes(message.length)

目标C中的等价物是什么

一些示例代码将不胜感激


提前感谢。

Sin Objective-C的根是C,您可以使用位运算符来完成类似的操作


COCOA/COCOA-TOUCH框架中没有任何东西可以自动为您实现这一点(如.NET的位转换器)。

如果您不需要特定的endian名称:

unsigned char * lengthPrefix = (unsigned char *)&message.length;
或者,如果需要,复制到32位缓冲区

unsigned char lengthPrefixBuffer[4];
memcpy(lengthPrefixBuffer, &message.length, 4);

byte[]lengthPrefix=位转换器.GetBytes(message.length); 与此相当的是

long ID = length;   
Byte *some = (Byte*)&ID;
    Byte b1 = some[0];
    Byte b2 = some[1];
    Byte b3 = some[2];
    Byte b4 = some[3];
Byte lengthPrefix[]= {b1,b2,b3,b4};
主要的想法是你需要多少字节。。。
因此,在这个操作之前的某个地方指定您想要的长度和字节数。所以从很长一段时间来看,4个字节就足够了。对于uint32,您可能需要更多。

您使用的是一个临时返回整数的地址。这个编译吗?它可能在一个寄存器中<代码>NSInteger长度=message.length;无符号字符*长度前缀=(无符号字符*)&长度 + 1虽然不漂亮,但应该工作(NStime==long),尽管我可能在MeMCPY版本中使用SIZEOF。在基础上有一个完整的函数来完成字节相关的字节交换。谢谢你的回答!以下操作达到了预期结果:NSInteger length=[msgData length];无符号字符长度前缀=(无符号字符)&长度;无符号字符长度PrefixBuffer[4]={0,0,0,0};memcpy(lengthPrefixBuffer,(unsigned char*)lengthPrefix,4);再次感谢,谢谢。