菜鸟一个,努力成为一个鸟。
如何将十六进制数组中的有用部分保存成为JPEG图像文件,再打开。说明这里边已经包含一个JPEG的图像数据
举例说明,我在Text1中有一串数组,分为三个数据包,
(第一个包)00 00 FA 01 FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF DB 00 43 00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 1E 28 3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 62 68 68 68 3E 4E 72 7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 16 30 1A 1A 30 64 42 38 42 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28 29 2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 D5 00 (第二个包)01 00 46 01 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 F8 F9 FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 11 03 11 00 3F 00 85 56 A5 14 D1 4E 14 08 7A D4 EA 2A 14 A9 87 4A 45 08 6A 5B 4E 24 E6 A2 35 2C 3C 1C D2 19 B4 92 00 29 DE 68 15 41 64 E2 9E 24 C5 31 17 44 C3 1C 75 A9 77 03 54 95 C5 48 BE C6 9D 80 E5 41 A7 03 51 03 4F 53 48 44 EB 52 66 A1 53 4F CD 21 8F A9 10 E2 A1 06 9E 1A 81 93 EF C5 48 24 CD 54 2D 42 BE 29 A0 2F AC 98 A9 D2 4A CF 57 A9 56 4A A0 30 81 A7 A9 A8 43 53 D4 D4 92 58 06 9C 1A A1 0D 4E 0D 48 64 A0 D3 B7 54 21 A8 DD 40 C9 4B 53 43 53 37 52 6E A6 22 CA 3D 4C 1A A9 AB 54 CA D4 C0 C9 06 A4 06 A0 06 9E 1A 90 89 C3 52 E6 A2 0D ED 4E DD 48 64 99 A5 DD 51 6E A5 DD 40 12 6E A3 35 1E 69 41 A6 04 A0 D4 C8 D5 58 1A 91 5A 98 1F FF D9 32 00 JPEG文件一定是以FF D8开始,FF D9结束
如设一帧512字节,那么只有506个是数,其余六字节是ID两个,数拒尺寸两个校验为2个
也就是说标了红色的字节数不要,再将剩余的保存成JPEG的图像文件,再打开。
需要将这些数组转换成为二进制再保存吗?
再问一下,如果我有三个包,或四个包,我将如何处理?

解决方案 »

  1.   

    改一下,
    举例说明,我在Text1中有一串数组,分为两个数据包
      

  2.   

    '下面的语句将文本去除空格、回车后,留下16进制文本,
    '1024个字符一段,你用Mid()可以很容易将需要的数据挖出来
    sAll = replace(replace(text1.text, vbCrLf, vbNullString), " ", vbNullString)'假设 sBlock 为挖出来的数据,那么如下将每两个字符转化为Byte
    dim n as byte
    n = CByte("&H" & Mid$(sBlock, i*2, 2))'逐个将Byte值写入jpg文件,注意文件句柄 hFile 是用 Binary 方式打开的
    Put #hFile, , n
      

  3.   

    谢谢Tiger_zhao的回贴,你的回帖带给我很多启发。在这里再次感谢你。我做的是关于以太网传输,winsock的部分我已经完成了,还差图片还原部分。
    因为我实在太菜了,刚接触VB,以前也没有学过编程,硬着头皮就上了,所以问题可能会很菜,请包容。
    你的回帖上的方法我用了,但是实现不了数据的提取,估计是我的程序有问题。你能不能给我一个较完整
    一点参考例子,例如设置2个text,text1用于放入数组,通过一个command转换提取有用的数据,转换后的数据放在text2,
    再通过一个command,将数组转为二进制并保存为jpg格式,再将jpg文件打开。
    耽误你宝贵的时间真是不好意思,公司逼得我太紧了~~~~
      

  4.   

    楼主标记出的红色部分应该不是图像数据吧,我把红色部分去掉后还原出了一个80x64的图片文件(834字节)。
    代码如下:Private Sub Command1_Click()
        Dim str1 As String, str2 As String, str3() As String, Data() As Byte
        Dim i As Long
        str1 = "FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF " & _
                "DB 00 43 00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 1E 28 " & _
                "3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 62 68 68 68 3E 4E 72 " & _
                "7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 16 30 1A 1A 30 64 42 38 42 64 64 64 " & _
                "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
                "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 " & _
                "01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 " & _
                "02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 " & _
                "32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28 29 " & _
                "2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 " & _
                "69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 " & _
                "A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 " & _
                "D8 D9 DA E1 E2 E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 " & _
                "01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 " & _
                "11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 " & _
                "07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 " & _
                "17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 " & _
                "5A 63 64 65 D5 00 "    str2 = "66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A " & _
                "92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 " & _
                "C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 " & _
                "F8 F9 FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 " & _
                "11 03 11 00 3F 00 85 56 A5 14 D1 4E 14 08 7A D4 EA 2A 14 A9 87 4A 45 08 6A 5B 4E 24 E6 A2 " & _
                "35 2C 3C 1C D2 19 B4 92 00 29 DE 68 15 41 64 E2 9E 24 C5 31 17 44 C3 1C 75 A9 77 03 54 95 " & _
                "C5 48 BE C6 9D 80 E5 41 A7 03 51 03 4F 53 48 44 EB 52 66 A1 53 4F CD 21 8F A9 10 E2 A1 06 " & _
                "9E 1A 81 93 EF C5 48 24 CD 54 2D 42 BE 29 A0 2F AC 98 A9 D2 4A CF 57 A9 56 4A A0 30 81 A7 " & _
                "A9 A8 43 53 D4 D4 92 58 06 9C 1A A1 0D 4E 0D 48 64 A0 D3 B7 54 21 A8 DD 40 C9 4B 53 43 53 " & _
                "37 52 6E A6 22 CA 3D 4C 1A A9 AB 54 CA D4 C0 C9 06 A4 06 A0 06 9E 1A 90 89 C3 52 E6 A2 0D " & _
                "ED 4E DD 48 64 99 A5 DD 51 6E A5 DD 40 12 6E A3 35 1E 69 41 A6 04 A0 D4 C8 D5 58 1A 91 5A " & _
                "98 1F FF D9"    str3 = Split(str1 & str2, " ")    ReDim Data(UBound(str3))
        For i = 0 To UBound(str3)
            Data(i) = "&H" & str3(i)
        Next    Open "c:\a.jpg" For Binary Access Write As #1
        Put #1, , Data
        Close #1
    End Sub
      

  5.   

    modest,为何我将数据粘帖在text上,却不能与你的程序结合在一起呢? 
    Data(i) = "&H" & str3(i)总是显示错误在这一句,对象不匹配
      

  6.   

    http://topic.csdn.net/u/20080605/21/8c6fb57e-9465-4103-a84e-31b82957ba62.html有一些转换的例子
      

  7.   

    Private Sub Command1_Click()
    Dim str1 As String, str2 As String, str3 As String, str4() As String, Data() As Byte
        Dim i As Long
        str1 = "FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF DB 00 43 " & _
               "00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 " & _
               "1E 28 3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 " & _
               "62 68 68 68 3E 4E 72 7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 " & _
               "16 30 1A 1A 30 64 42 38 42 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
               "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
               "64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 64 64 64 64 " & _
               "64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 " & _
               "00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 " & _
               "04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 " & _
               "07 22 71 14 32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 " & _
               "17 18 19 1A 25 26 27 28 29 2A 34 35 74 75 76 77 78 79 7A 83 84 85 86 87 88 " & _
               "89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 " & _
               "B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 " & _
               "E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 01 " & _
               "01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B " & _
               "FF C4 00 B5 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 " & _
               "11 04 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 " & _
               "33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 17 18 19 1A 26 27 28 29 2A 35 36 " & _
               "37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 D5 00 "
     
        
       str2 = "66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 " & _
              "98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 " & _
              "C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 F8 F9 " & _
              "FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 " & _
              "11 03 11 00 3F 00 BA 2A BD D4 25 B6 4A 1B 05 33 C6 3A 83 DB DA AC 81 9A 64 83 70 2B " & _
              "59 B7 66 6A 95 CA 28 30 00 AB 31 0C 0D C7 F0 F7 A6 08 F2 A9 8F BC 73 C5 5B 81 62 91 " & _
              "B6 96 E9 F7 46 2B 56 CE 74 AE C9 E1 82 36 58 4E EF 97 9C 9C 75 AA F7 88 56 53 2B 7D " & _
              "E7 FE 1F 4C 55 88 E1 79 2F 7E CB BB 6A 2E 3B 74 C8 CD 3A F2 25 50 81 A2 31 B4 64 82 " & _
              "B9 CE 73 49 33 5B 69 62 BC 32 18 A3 91 B3 D7 18 A5 84 36 FD EC 72 D4 30 65 07 3D 4F " & _
              "51 E9 4D 0F B4 63 14 D1 9C B4 5C A6 CC 65 66 89 91 8E 38 AC 12 08 24 1E A2 BA 4D 32 " & _
              "78 DE 28 E3 6F F5 8B 9C 7E B5 93 AB 42 63 BF 73 8F 95 B1 8F C8 54 C9 95 49 58 84 71 " & _
              "55 2F 25 2B 35 BA 47 19 79 5C 92 0E 71 B7 03 93 EF C1 35 68 B0 03 26 A1 76 66 38 5E " & _
              "A7 B5 43 DC E9 8C 5B 20 53 B4 F4 E6 A7 B6 E5 D5 07 F1 75 FC 2A 19 06 D9 08 ED 4F 8D " & _
              "88 04 2F DE 3D FD 2B 4E 87 26 D2 34 1C C6 C5 B7 3E C6 43 CB 63 3D 6A 7B D9 5A ED 96 " & _
              "50 B8 E3 E5 19 FC EA 94 8F E6 CC 78 C8 18 CF 3D 78 AB 53 2F FA 04 32 0E 83 39 FC E9 " & _
              "24 6E 53 95 82 C7 91 FC 55 0A AE 4F 27 14 8E D9 26 94 1C 1A AE 9A 18 4D A7 23 42 CE " & _
              "42 92 86 1D 45 68 6B 90 97 8A 39 07 44 CE 7F 1C 56 5D B3 81 CD 6D DE  " & _
              "13 71 A4 B9 1D 4E 3F 9D 45 9D C7 17 66 73 6F C8 C1 E9 53 26 D4 40 07 4A CC 37 8D 28 " & _
              "3F 67 88 C8 3B 92 76 28 00 "
              
              
              
       str3 = "8F D6 A3 5D 50 2B 95 95 76 01 D5 81 CD 4B DC EA B3 2E 4E A7 39 FC A9 A8 48 60 47 5A " & _
              "20 97 ED 76 4B 22 AE 1B 9C 0C FB D2 46 C0 80 E2 AE 2C E7 AB 1B 3B 97 42 98 E3 52 BD " & _
              "06 7F 1A 7F 9F 8B 19 63 3C 72 31 F9 D4 32 36 D4 C7 5A AF 92 41 F7 A6 82 A4 AC AC 86 " & _
              "E6 9C 0F 14 CD AC 4F 4A B1 14 6A 41 DD D6 AA E6 29 36 4B 6A 54 92 18 F1 5B B6 93 21 " & _
              "B7 64 23 8A E7 9B 6A BE 41 EB DA B5 AC A6 66 0B 1A 47 93 F5 A3 70 6A CC E6 45 9D B1 " & _
              "1C A6 7F E0 46 A1 BB 8C 2A 25 B4 20 2A C8 79 FC 39 A9 E1 97 7A 66 A0 6D CD 7C A5 BE " & _
              "E0 FF 00 0A C5 EE 77 97 B4 F4 18 96 24 F9 50 10 40 F4 AB 97 91 B1 80 18 D3 71 5E D9 " & _
              "AA 96 D3 01 72 B1 28 C6 41 AD 74 CD 17 22 49 3D CC 58 E4 0E 32 0D 48 A7 E6 AD 36 B3 " & _
              "85 A5 F3 0A FC C6 A4 11 A2 F4 15 7C E6 0E 96 BA 19 38 91 CF CA B5 2A DB 4A DF 7B 8A " & _
              "BE E6 99 B8 E6 8E 66 35 4D 75 19 0D 9A 02 0B 1C D7 41 66 51 23 DA A3 02 B2 62 52 4D " & _
              "5F 89 5D 97 6E 38 3D 68 D5 EE 3E 54 8F FF D9 "          
              
        str4 = Split(str1 & str2 & str3, " ")    ReDim Data(UBound(str4))
        For i = 0 To UBound(str4)
            Data(i) = "&H" & str4(i)    Next    Open "c:\a.jpg" For Binary Access Write As #1
        Put #1, , Data
        Close #1End Sub
    为何标红色的地方会出现对象不匹配
      

  8.   

    楼上的
      Next 
    要另起一行啊