1
我很难从iOS中的缓冲区获取整数。如何在iOS中将缓冲区中的大整数读入整数?
要读取一个字符串,我使用:
output = [[NSString alloc] initWithBytes:buffer lenght:len encoding:NSASCIIStringEncoding];
但似乎没有成为整数等效initWithBytes。
由于提前,
戴夫
我很难从iOS中的缓冲区获取整数。如何在iOS中将缓冲区中的大整数读入整数?
要读取一个字符串,我使用:
output = [[NSString alloc] initWithBytes:buffer lenght:len encoding:NSASCIIStringEncoding];
但似乎没有成为整数等效initWithBytes。
由于提前,
戴夫
这是因为缓冲器可以被直接铸造为整数值。
int original = 0xBADF00D;
void *buffer = &original;
//Cast the void* as an int* and then dereference the value
int intFromBuffer = *(int*)buffer;
NSLog(@"0x%X 0x%X", original, intFromBuffer);
输出:
0xBADF00D 0xBADF00D
乔您好,感谢的!我认为这将适用于非常大的数字? – user867358
保证 - 只是谷歌转换为十亿十六进制,看着intFromBuffer,它的工作! – user867358
是的,它可以处理非常大的数字,但要确保您正在使用缓冲区内部的正确整数大小。如果缓冲区指向一个32位无符号整数,那么使用一个32位无符号整数,对于64位数也是一样。这非常重要,这样您就不会因为无法访问的垃圾数量或更糟糕的读取内存而导致数据丢失。 – Joe