从NSData获取整数

问题描述

我正在使用一个能够从BTLE设备中提取数据并将其放置在NSData中的库。但是,我需要将数据的各个行拖入int的行中。我该怎么做?

代码如下:

- (void)realDataCallBackWithData:(NSData *)realData{
      if (realData == nil) {
              DLog(@"error");
              return;
      }
      VTRealObject *rObj = [VTO2Parser parseO2RealObjectWithData:realData];
      self.descLab.text = [rObj description];
}

- (UILabel *)descLab{
      if (!_descLab) {
              _descLab =  elalloc initWithFrame:[UIScreen mainScreen].bounds];
              _descLab.numberOfLines = 0;
              _descLab.textAlignment = NSTextAlignmentCenter;
              [self.view addSubview:_descLab];
      }
      return _descLab;
}

这是库VTO2Parser.h代码:

#import <Foundation/Foundation.h>
#import "VTO2Info.h"
#import "VTO2Object.h"
#import "VTO2WaveObject.h"
#import "VTRealObject.h"

NS_ASSUME_NONNULL_BEGIN

@interface VTO2Parser : NSObject

// @brief parse O2 information
// @param infoData infoData from peripheral
+ (VTO2Info *)parseO2InfoWithData:(NSData * _Nonnull)infoData;

// @brief parse O2 object
// @param fileData fileData from peripheral
+ (VTO2Object *)parseO2ObjectWithData:(NSData * _Nonnull)fileData;

// @brief parse O2 Wave array .
// @param waveData waveData from   VTO2Object
+ (NSArray <VTO2WaveObject *>*)parseO2WaveObjectArrayWithWaveData:(NSData * 
_Nonnull)waveData;

// @brief parse O2 Real-time data
// @param realData realData from peripheral
+ (VTRealObject *)parseO2RealObjectWithData:(NSData *)realData;

// @brief parse O2 Real PPG data
// @param realPPG real PPG data from peripheral
+ (NSArray <VTRealPPG *>*)parseO2RealPPGWithData:(NSData *)realPPG;

@end

NS_ASSUME_NONNULL_END

这也是VTO2Object.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface VTRealObject : NSObject

// @brief blood oxygen value
@property (nonatomic,assign) u_char spo2;

// @brief heart rate
@property (nonatomic,assign) u_short hr;

// @brief battery value
@property (nonatomic,assign) u_char battery;

// @brief battery status
@property (nonatomic,assign) u_char batState;

// @brief Perfusion Index value
@property (nonatomic,assign) u_char pi;

// @brief lead status . for BabyO2:       0: Probe off     1: Lead normal       2: Lead off
@property (nonatomic,assign) u_char leadState;

// @brief motion value
@property (nonatomic,assign) u_char vector; 

@end


@interface VTRealPPG : NSObject

// @brief Infrared
@property (nonatomic,assign) int ir;

// @brief RLED
@property (nonatomic,assign) int red;

// @brief motion
@property (nonatomic,assign) u_char motion;

@end


NS_ASSUME_NONNULL_END

应用内的最终结果如下:

-{ batState = 0; 电池= 66; hr = 76; leadState = 1; pi = 20; spo2 = 98;向量= 0;}

如何从上述数据中获取独立的整数,以便将其分配给各个标签?

解决方法

您的VTRealObject rObj可能已经包含了所有想要的值,并将它们作为属性或方法返回值交给您。

如果没有,那么您需要做的就是VTO2Parser已经在做的事情:直接查看realData并解析它,找到它包含的值并解释它们。为此,您必须了解realData format 。这样,任务就很容易了。例如,如果您知道realData的前两个/四个字节是代表long的{​​{1}},那么将它们读取为batState并不容易。依此类推。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...