有人可以帮助我?我有一个NSString@"12.34"我想它使用相同的浮点数,但在单精度32位转换成二进制NSString的浮点格式IEEE-754:像@"\x41\x45\x70\xa4"(带六字符)或@"AEp¤" ... 我敢肯定它的东西很容易,但几个小时的阅读文档没有找到一个解决方案之后...

谢谢!

有帮助吗?

解决方案

至于虞姬所提到的,它不是一个任意字节序列编码成一个NSString一个好主意(尽管它可以包含空字节),即编码转换可以(并且可能会)摧毁你的字节序列。如果你想获得一个浮动的原始字节,你可能要考虑将它们存储为一个NSData对象(虽然我建议你想通过你的理由为希望第一本)。要做到这一点:

NSString *string = @"10.23";
float myFloat = [string floatValue];
NSData *myData = [[NSData alloc] initWithBytes:&myFloat length:sizeof(myFloat)];

其他提示

如果你想获得一个浮动的原始字节,你可以施放它,就像这样:

NSString *str = @"12.34";
float flt = [str floatValue];
unsigned char *bytes = (unsigned char *)&flt;
printf("Bytes: %x %x %x %x\n", bytes[0], bytes[1], bytes[2], bytes[3]);

然而,在这些字节被存储在数组中的顺序取决于在机器上。 (请参见 http://en.wikipedia.org/wiki/Endianness )。例如,在我的英特尔的iMac它打印: “字节:A4 70 45 41”。

要从字节数组使一个新的NSString可以使用initWithBytes:length:encoding:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top