如何将NSData字节转换为NSNumber或NSInteger? [英] How to convert NSData bytes into NSNumber or NSInteger?

查看:1260
本文介绍了如何将NSData字节转换为NSNumber或NSInteger?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个特殊的 NSString initWithData 方法,用于抓取位并将它们转换为字符串。但是,我没有在 NSNumber 类ref中找到它。目前,我从 NSData 格式的服务器获取原始数据(字节)。我知道如何在C中使用 memcpy int 指针。但我很好奇直接从 NSData 那样做的便利方法。无需转换。例如,我得到 00000010 byte,我需要将其转换为值为2的 NSNumber ,或者 NSInteger

There's a special NSString initWithData method for grabbing bits and converting them into string. However, I haven't found that in NSNumber class ref. Currently, I'm getting raw data (bytes) from a server in NSData format. I know how to do that in C, using memcpy and int pointers. But I am curious about what the convenience methods are for doing that straight from NSData. No conversion is needed. For example, I'm getting 00000010 byte, and I need to turn that into NSNumber of value 2, or NSInteger.

推荐答案

NSData 只是一个字节桶,不知道其中包含的数据。 NSString 's initWithData:encoding: method是此方法的倒数(它正好相反):

NSData is just a bucket for bytes and has no knowledge of the data contained therein. NSString's initWithData:encoding: method is a reciprocal (it does the opposite) of this method:

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

因此,要完全回答您的问题,了解您的号码最初是如何强制转换为 NSData 对象非常重要。一旦你知道编码函数,搜索就是互惠函数。

Therefore, to answer your question fully, it's important to know how your numbers were originally coerced into an NSData object. Once you know the encoding function, the search is for the reciprocal function.

根据你在问题中所包含的内容,可能有许多不同的解决方案。但是,您可能可以使用以下行中的某些内容在NSData对象上使用 getBytes:length:转换为可用的数字格式。例如。

From what you've included in the question, there may be a number of different solutions. However, you'll probably be able to use something along the following lines to convert into a usable numeric format using getBytes:length: on your NSData object. For e.g.

NSUInteger decodedInteger;
[myDataObject getBytes:&decodedInteger length:sizeof(decodedInteger)];

您可以将 decodingInteger 的类型更改为适用于 NSData 对象中的字节的任何内容。

You can change the type of decodedInteger to whatever is appropriate for the bytes in your NSData object.

这篇关于如何将NSData字节转换为NSNumber或NSInteger?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆