質問

缶誰かの助け私?私はNSString@"12.34"を持っていると私は同じフロート番号とNSStringのに変換したいが、単精度バイナリ浮動小数点形式IEEE-754 32ビット:(ヘキサ文字付き)@"\x41\x45\x70\xa4"または@"AEp¤"などを... 私は簡単に確認してください、それの何かだが、解決策を見つけることなく、ドキュメントを読んで多くの時間後に...

ありがとうございます!

役に立ちましたか?

解決

(それがNULLバイトを含めることができますが)として雄二が述べた、それは(そしておそらくWILL)あなたのバイトシーケンスを破壊することができます変換をコードとして、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