convertir un tableau d'octets de la chaîne
Mon Scala réception d'un code binaire à partir de flux d'octets,il ressemble à [61 62 63 64].Le contenu est "abcd".
J'ai utiliser toString pour le convertir en p, mais a échoué.
Comment puis-je l'imprimer comme une chaîne de caractères ?
Essayez d'analyser chaque nombre comme un char et concate eux d'avoir une chaîne
la Conversion de tableau d'octets chaîne de caractères
Double Possible de tableau d'Octets à la Chaîne et au retour.. des problèmes avec -127
la Conversion de tableau d'octets chaîne de caractères
Double Possible de tableau d'Octets à la Chaîne et au retour.. des problèmes avec -127
OriginalL'auteur Robin | 2017-07-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez convertir le tableau d'octets dans un tableau de char, et ensuite construire une chaîne de caractères à partir de ce
@Michael-hill, déjà mentionné dans un commentaire ci-dessous, cela peut causer des problèmes car il suppose que vous travaillez en ASCII et pas en UTF-8 ou une autre codage de caractères. Si vous essayez de convertir les suivantes (bon) UTF-8 tableau d'octets en une Chaîne de caractères...
val msg = Array[Byte](-17, -69, -65, 72, 101, 108, 108, 111)
(msg.map(_.toChar)).mkString
Vous obtenez quelque chose qui avait l'air très bizarre et pas attendus "Bonjour" que vous obtenez à partir de ce:new String(msg)
OriginalL'auteur cms
Vous pouvez toujours convertir le tableau d'octets en une chaîne de caractères si vous connaissez le jeu de caractères,
Et la valeur par défaut
Charset
serait utilisé si vous ne spécifiez pas tout.(bytes.map(_.toChar)).mkString
ounew String(bytes)
?c'est peut-être un peu tard pour vous; mais les deux seraient susceptibles de produire des résultats différents. UTF-8 est d'une largeur variable de codage, de sorte qu'un seul caractère peut être codé avec un octet unique ou multiples. UTF-8 code ASCII des caractères de la même manière (par exemple.
A
est représenté par65
dans les deux) mais la plupart (peut-être tous?) les autres personnages avec plusieurs octets. En bref, ils sont le même, si votre chaîne ne contient que des caractères ASCII, mais sinon va produire des résultats différents.en supposant que le flux est UTF-8 flux est assez raisonnable pour le texte des charges utiles de nos jours. La question d'origine doit imprimer un 'binaire' flux d'octets, ce cas particulier n'implique pas une chaîne de codage. C'est pourquoi il est préférable de fournir un encodage lorsque vous êtes à la transmission de chaînes de caractères. (Vous pouvez utiliser l'analyse de la fréquence de conclure à une probable codage de la chaîne si vous avez un flux de texte avec pas indiqué d'encodage)
OriginalL'auteur Sleiman Jneidi