如何读取存储在 NSData 中的二进制数据



我正在从网络通话中获取数据。这是数据。

00000001 00045043 4C4e0000 00023744 92F4CD44 92F4CD44 92F4CD44 92F4CD3C A3D70A00 00014DE2 B767A044 93800044 93800044 93800044 93800040 A00000000 00014DE2 BDD04044 94400044 94400044 93db3344 94170a3f a6666600 00014DE2 c8CCC044 93D DC344 93DDC344 93DDC344 93DDC33E 99999a00 00014DE2 CE4B0044

93BD1F44 943D7144 9394CD44 93ECCD41 e8E14800 00014DE2 D01FC044 93EB3344 93EB3344 93B00044 93B00040 C0000000

数据格式是固定的(我们知道它在哪里存储 int/float 等。

问题是我如何读取并将其存储在单个变量中例如,这里的前 4 个字节指定返回的符号数 (1)

NSMutableString *stringHexForm = [NSMutableString string];
for(int i = startLocation ; i < (startLocation + nCharsToReadIn) ; i++)
{
    unsigned char byte;
    [dataIn getBytes : &byte range : NSMakeRange(i, 1)];
    NSString *tempStr=[NSString stringWithFormat:@"%02x",byte];
    [stringHexForm appendString:[NSString stringWithFormat:@"%@",tempStr]];
}
unsigned result = 0;    
NSScanner *scanner = [NSScanner  stringHexForm];
[scanner scanHexInt:&result];
return result;

NSData 有应该可以帮助您的方法func getBytes(buffer: UnsafeMutablePointer<Void>, range: NSRange)。您可以通过指定范围来获取结构中的每个内容。

所以你可以做到:

var length: Int = 0
myData.getBytes(&length, range: NSMakeRange(0, 4))

以此类推,每种类型,您需要的范围

最新更新