2010-11-27 28 views
1

J'ai besoin de stocker des octets bruts de NSData objet dans un NSString (fondamentalement un codage nul) mais je ne suis pas sûr comment faire cela. Évidemment, affecter un encodage 8 bits incorrect serait mauvais. NSASCIIStringEncoding n'est pas OK, car les docs disent "encodage ASCII 7 bits strict dans les caractères de 8 bits, les valeurs ASCII 0 ... 127 seulement." mais j'ai besoin de toute la gamme de 0x0 - 0xFF.Quel encodage utiliser avec des octets bruts dans un NSString

Base64 L'encodage n'est PAS une solution acceptable.

+0

Il pourrait être utile de connaître un peu plus de contexte. D'où proviennent les données? Où essayez-vous de l'envoyer en chaîne? – grahamparks

Répondre

2

Fondamentalement, vous n'avez pas.

Un NSString est pour des chaînes de données de chaîne validées de manière codée; typiquement UTF8 ou UTF16. NSData est pour les données binaires arbitraires.

Si vous voulez stocker des octets bruts dans un NSString, vous devez les coder et base64 est l'un des moyens les plus courants pour le faire.

+0

Bien sûr, @bbum livre à nouveau! :) –

+0

Cela signifie donc que nous devons encoder et décoder en base64 le NSData et convertir le NSData résultant en Nsstring. Ai-je raison? – Warrior

+0

Yup - ça marcherait. Généralement à éviter à moins d'y être obligé. – bbum