尝试从JPEG二进制数据显示UIImage(如何将字符串转换为数据)

时间:2018-08-19 03:32:35

标签: swift

我正在尝试从远程服务器传递的二进制数据中显示JPEG图像。我看过有关如何将已经以JPEG形式给出的图像转换为数据然后再转换为图像的教程,但是这里存在一个问题,其中我将二进制数据作为字符串。我在将该字符串转换为数据类型时遇到麻烦,因此我可以将其显示为图像。如何将字符串转换为数据?

我的代码:

let binaryData: String = receivedMessage //receivedMessage has the 
                                         //binary data in string form
let image = UIImage(Data: receivedMessage) //error occurs here because
                                           //receivedMessage is a
                                           //String type argument

我知道在这两行之间,我需要将字符串转换为Data类型。我该怎么办?

我的数据不是base-64编码的,它是二进制的。看起来像(因为它不一定只是ASCII值):

�|| zj \ S ^ E#[�R��“ D($ ;; jˊ^ T ﰣ u ^F�q@��I$܂N.!AEI ^ V ^ Fޣ^X�Ѭ> zBZ tiZ ^^ Yq Q ^ R ^AҔSvvB3���1^Qzԥ4ْ���Ha��^ @ ^ E $�II^WI2d���j�^ Cn, ^HW�:��:$ @ IB ^ ZJH ^ Q ^Q�9E=:��-�V����J�B�^] q ^ M ^ W ^ \ ^ @��1d��ƥ^ RI&N <ǘ。��〜^ B2b?x?��^ @�“> ^ @����������m�f��ր�^P��J�,��^ E(X。 $ ^ @��y��}3�^ @ԜG�^ @} ^^ @YQ���^?F ^S�^ @�n��] ^Sяt。?=0�� �>k�^ FT㓩Bu���b�8�Kî�%5] ^]ҵ)��5^] = <<9H�^V�ly�1�^N��$ AJ�I)�y�1������^ @?�<^ /�hh����Z������]eC�kU>RJ�^q��6��� ��,�1�^ \ yr}n�n*V�^ S ^ [�B^BZ�$z��G����^?���<���s。#�B=。 $ gT ^TB�,^D�XZ���^^b�7�����?턝��ֱ�,R��QR��^NhB�$������6^W�^ X�xnO�F����dO�^ @�y^ @ ^K�^ @�^^c�yojn��R�^ @�W������^?$ �m���Q�L�&H&I��7�����0�__�^ @-^]�1�=8������:=���^ UVj ^ B | Ky ^ A(��^ Z @���^Y1�Z&�^ [�^ M ^ \��ƛK��Ŧ�����^^c���^ @ $ ^ H ^D�c�y�^ V +��ng�r㷆�^ @)��^ @ v〜pm +�J�^ @x��d��r^ @��&〜� }.h��U?���������y����g�^@��qN^G��^?�_^H²Kt�I��^W��n?N$ $�^H��c^ P#�1�<�^ \����^ @����y�����+ 6 ^ @xaN�����k�^W�✭ Q�^L�Ћɟ���1�8�^S�g^S�^ @ ^W?������C��^O�^Q�@ytf.*B�+

1 个答案:

答案 0 :(得分:2)

整个问题是由于您坚持认为二进制数据的斑点可以是字符串。不可以这是二进制数据的一滴,也称为数据。

如果由于某种原因要接收到表示图像的字节序列到数组中,请将其键入为UInt8数组。 (UInt8是一个字节。)现在,您可以将数组包装为数据并将其作为图像打开:

let array : [UInt8] = // ... whatever ...
let d = Data(array)
let im = UIImage(data: d)