-
基础数据类型与NSData互转
-
基础数据类型与NSData互转
-
data.bytes
iOS 系统库提供了简便的API可以实现基础数据类型和NSData的转化,读data.bytes可以直接获取到。
以int为例:
int num = 10;
NSData *data = [NSData dataWithBytes:&num length:sizeof(num)];
const uint8_t *bytes = [data bytes];
int num1 = 0;
[data getBytes:&num1 length:data.length];
NSLog(@"num:%d num1:%d",num,num1);
dataWithBytes:length: 这个方法传入两个参数,第一个参数是内存地址。有了内存地址,就能够找到数据存储的首位置。第二个参数,长度,有了长度就知道数据在内存中的offet。
这样即找到了数据的起始位置,又知道了数据应该读到哪里,就能从内存中准确地读取出二进制数据来了。
getBytes:length: 这个方法读取数据的时候,得提前知道数据是什么类型的,给定一个该类型的内存地址,然后知道了需要读到哪里(offset)。然后从内存中将二进制流读出来,存储到&num1这个给定的地址下,并且存储为int类型的数据。
NSInter也可以在NSData,bytes之间转换:
NSInteger integer = 10;
NSData *integerData = [NSData dataWithBytes:&integer length:sizeof(integer)];
NSInteger integer1 = 0;
[integerData getBytes:&integer1 length:integerData.length];
NSLog(@"integer:%ld integer1:%ld",(long)integer,(long)integer1);
有想法的话可以探索一下dataWithBytes:length:方法的内部实现。
int num = 10;
NSData *data = [NSData dataWithBytes:&num length:sizeof(num)];
NSUInteger len = data.length;
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, data.bytes, len);
char *str = "hello world";
NSData *data = [NSData dataWithBytes:str length:strlen(str)];
NSString *str1 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[1] How to convert NSData to byte array in iPhone? : https://stackoverflow.com/questions/724086/how-to-convert-nsdata-to-byte-array-in-iphone
OC 基础数据类型转bytes基础数据类型与NSData互转基础数据类型与NSData互转data.bytes系统方法iOS 系统库提供了简便的API可以实现基础数据类型和NSData的转化,读data.bytes可以直接获取到。以int为例:// Int convert to NSDataint num = 10;NSData *data = [NSData dataWithBytes:&num length:sizeof(num)];const uint8_t *byte
Core Foundation 框架 (CoreFoundation.framework) 是一组 C 语言接口, 简称 CF.
它们为 iOS 应用程序提供基本数据管理和服务功能.
如 Core Graphics、Core Text,并且我们可能需要将 CF 对象和OC 对象进行相互转化,ARC 下,编译器不会自动管理 CF 对象的内存,我们需要手动管理.
创建一个 CF 对象使用后, 需要使用 CFRelease 将其手动释放, 换句话说, Core Foundation 对象类型不在 ARC 管理范畴内.
如何将 CF 和 OC 对象有效的结合起来
- (char *)nsdataToChar:(NSData *)nsData {
// nsdata直接用bytes转char后面会多乱码,根据长度截取
int byte_len = (int)[nsData length];
char *tmp_char = (char*)[nsData bytes];
char *data_char = (char*)calloc(sizeof(char),byte_len+1);
memcpy(data_char, tmp_c
- (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b;
初始化对象。
不进行复制字节数组操作,直接设置字节指针为bytes,长度为length。
- (instancetype)i...
NSString *strIdL = [NSString
stringWithFormat:@"%@",[[NSString
alloc] initWithFormat:@"%02lx",(long)bytes[0]]];
十六进制->十进制
NSString *rechar
最近项目中要用到socket通讯,由于涉及到组包问题,所以需要数据类型之间的来回转换,现在分享出来
如果想要请教Socket的问题请留言,我会随时回答的
1. int类型转16进制hexstring
[objc] view plain copy
//int 转16进制
- (NSString *)hexFromInt:(NSInteger)val {
return [NSS...
OC HTTP Server是一款基于Objective-C语言编写的HTTP服务器,可用于iOS或Mac应用程序中。它具有轻量级、可嵌入、易用等特点。使用OC HTTP Server可以很方便地实现服务器端的API接口开发或HTTP文件传输等功能。
OC HTTP Server提供了一个HttpServer类,该类可用于创建一个HTTP服务器实例。我们可以设置监听的端口号、网络接口、资源文件目录、请求处理逻辑等参数。在处理HTTP请求时,OC HTTP Server会对请求进行解析,并将请求参数、请求头部信息、请求体等信息提取出来,开发者可以根据自己的需求进行处理和响应。
OC HTTP Server支持常见的HTTP方法,如GET、POST、PUT、DELETE等。我们可以根据请求方法和请求路径,来执行相应的逻辑操作。OC HTTP Server还提供了一些有用的内置功能,例如:路由映射、静态资源管理、访问日志等等。
总之,OC HTTP Server是一款不错的HTTP服务器框架,使用起来简单方便,配置灵活可扩展。它为iOS或Mac应用程序提供了一种快速搭建HTTP服务的解决方案。