2011-12-21 10 views
2

iPad 용 FormsConnect 응용 프로그램을 사용하여 서명을 XML로 내 보냅니다. 이 코드를 사용해서 이미지에 다시이 진수 문자열로 변환하기 위해 노력하고있어 이제16 진수 문자열을 이미지로 변환

0x1828023f020000001d1100000018000000e02f01000000000000000000000000a888223f010000005259414ca0a37e00000000000000000000000000000000000000000000000000000000000000000010b9611100000000000000000000000000000000308e660e00000000c021070030a46c0e00000000000000000000000044b0fb3e00beb0000100000001000000107b6111000030420000584200000000000000000000000000000000000080bf00000000000000000100000000000000000000000000000000000000000000001cb0fb3e0100000000000000000000000000000000000000000000000047864aa0860100a086010000c05411000070110047864a0000000000000000010000000000000000000000000000000000000018884d3f801200010900000101000000000000000000020074a54e3fb0b6690ec0b6690e00000000000000000000000044b0fb3e0038a9000100000001000000f0e4c008000030420000304200000000000000000000000000000000000080bf00000000000000000100000000000000000000000000000000000000000000001cb0fb3e0100000000000000000000000000000000000000000000000047864aa0860100a08601000020761100407c110047864a0000000000000000010000000000000000000000000000000000000018884d3f801200010900000101000000000000000000020074a54e3f20b6690e30b6690e000000000000000000000000a888223f010000005259414c808b730c00000000000000000000000000000000000000000000000000000000000000000cc0fb3e0000000000000000000000000400000000000000000000000000000000000000000000000000000000000000a888223f010000005259414ce06ebe0a00000000000000000000000000000000000000000000000000000000000000009ceefb3ea08c61110000000000000000000000000000000000000000000000000000000000000000280001c10400000000000000b017640000000000000000000000000000000000000000000000000000000000000020415846fc3ed08c6111000000000000000000000000000000000000000000000000000000000000003f000000004014630000887a0670c89b0c40146300000000000000000000000000000000000000000000000000100000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e44200000000000000000000000000000000408d6111f08e61110000584200003042000000000000000000000000a888223f010000005259414c4040050d00000000000000000000000000000000000000000000000000000000000000002cd7fb3e108d61110000000000000000a08e6111d033120000000000000000000000000000000000200000c10000000000000000000000000000000000000000a888223f010000005259414c304d050d0000000000000000000000000000000000000000000000000000000000000000ccc8fb3eb08d611100000000d08c611100000000908b6111000000000000000000000000000000000000000000000000000000000150000000000000f08d611101000000000000000000e03f0000204100000000000000000000000000000000108e611104000000000000000000000084854d3f01000000110000000300000002000000e08d61110000000000000000f0c7fb3e908b61112952d53200000000d08d6111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000094c9fb3e0100000000000000608e611100000000000000000000000000000000000000000000000000003442000000000000e83f000000606666d63f808e6111408d6111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000084854d3f0000000001000000030000000100000000000000000000000000000084854d3f01000000110000000300000002000000c08e61110000000000000000408d6111000000000000000000000000d088223fe003fe07020000000800000002000000000000000000000000000000b4effb3e308f6111000000000000000000000000b0906111000000000000000000000000f0496300200000c100000000608f6111000080bf0200000000000000a888223f010000005259414cf04a050d000000000000000000000000000000000000000000000000000000000000000054a0fb3ed08f6111000000000000000000000000d0331200000000000000000000000000f0496300330000c100000000000000000000000020887a06201c630000000000e0a762001032d805000000000000803f0000000000000000010000000000c841000000000416000000000000a888223f010000005259414c9047050d0000000000000000000000000000000000000000000000000000000000000000d088223fc00bfe070100000008000000010000000000000000000000000000003ca9fb3e00000000b7b6363f9796163ffffefe3e0000803f304277060000000084854d3f01000000110000000300000007000000609061110000000000000000c0b96f0e000000000000000000000000a8894d3f800501012412010050596100000000000000000000000000040000009f9e9e3ea9a8a83eb3b2b23e0000803f00c66d0e00000000000000000000000084854d3f01000000110000000300000002000000c06e6d0e00000000000000009ceefb3ee09161110000000000000000000000000000000000000000000000000000000000000000280001c10400000000000000b017640000000000000000000000000000000000000000000000000000000000000020415846fc3e10926111000000000000000000000000000000000000000000000000000000000000003f000000004014630020629b0c10629a0c40146300000000000000000000000000000000000000000000000000100000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4420000000000000000000000000000000080926111309461110000584200003042000000000000000000000000a888223f010000005259414c1043050d00000000000000000000000000000000000000000000000000000000000000002cd7fb3e509261110000000000000000e0936111d033120000000000000000000000000000000000200000c10000000000000000000000000000000000000000a888223f010000005259414c804b050d0000000000000000000000000000000000000000000000000000000000000000ccc8fb3ef0926111000000001092611100000000d09061110000000000000000000000000000000000000000000000000000000001500000000000003093611101000000000000000000e03f00002041000000000000000000000000000000005093611104000000000000000000000084854d3f01000000110000000300000002000000209361110000000000000000f0c7fb3ed09061112952d5320000000010936111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000094c9fb3e0100000000000000a093611100000000000000000000000000000000000000000000000000003442000000000000e83f000000606666d63fc093611180926111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000084854d3f0000000001000000030000000100000000000000000000000000000084854d3f0100000011000000030000000200000000946111000000000000000080926111000000000000000000000000d088223f6007fe07020000000800000002000000000000000000000000000000b4effb3e7094611100000000000000000000000030976111000000000000000000000000f0496300200000c100000000a0946111000080bf0200000000000000a888223f010000005259414c0047050d000000000000000000000000000000000000000000000000000000000000000054a0fb3e10956111000000000000000000000000d0331200000000000000000000000000f0496300330000c100000000000000000000000040629b0c201c630000000000e0a762001032d805000000000000803f0000000000000000010000000000c841000000000416000000000000a888223f010000005259414c8042050d0000000000000000000000000000000000000000000000000000000000000000d088223fc00ffe07010000000800000001000000000000000000000000000000907c6211000000000000000000000000a0946111000000000000000000000000a8894d3f8006010200000000504f6c0e00100000000000000000000000000000000000000000000045f41836397925360000000000000000000000005854554d000000006028000000000000000000000000000000000000d09561110000000000000000d4956111000000000010ea0d0000000000000000000000000000000000000000000000000000000000000000a8894d3f8005010132e100005059610000000000000000000000000004000000e3e2e23ef1f0f03e8180003f0000803fa888223f010000005259414c5045050d0000000000000000000000000000000000000000000000000000000000000000a888223f010000005259414cc044050d000000000000000000000000000000000000000000000000000000000000000054a0fb3e202fc508000000000000000000000000d0331200000000000000000000000000f0496300330000c10000000000000000000000008054990c201c630000000000e0a762001032d805000000000000803f0000000000000000010000000000c841000000000416000000000000a0966111000000000000000000000000087c070000000000000000000000000084854d3f010000001100000003000000020000007095611100000000000000009ceefb3e409661110000000000000000000000000000000000000000000000000000000000000000280001c10400000000000000b017640000000000000000000000000000000000000000000000000000000000000020415846fc3e60986111000000000000000000000000000000000000000000000000000000000000003f0000000040146300402a930c20a5990c40146300000000000000000000000000000000000000000000000000100000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e44200000000000000000000000000000000a0986111509a611100005842000030420000000000000000000000002cd7fb3e709661110000000000000000009a6111d033120000000000000000000000000000000000200000c10000000000000000000000000000000000000000ccc8fb3e10996111000000006098611100000000509761110000000000000000000000000000000000000000000000000000000001500000000000005099611101000000000000000000e03f00002041000000000000000000000000000000007099611104000000000000000000000084854d3f01000000110000000300000002000000409961110000000000000000f0c7fb3e509761112952d5320000000030996111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000094c9fb3e0100000000000000c099611100000000000000000000000000000000000000000000000000003442000000000000e83f000000606666d63fe0996111a0986111000000000000000000000000c08a4d3f8011000101000000000000000000000000000100c8c94e3f0000000084854d3f00000000010000000300000001000000000000000000000000 

: 다음 앱에서 출력 될 때

Bitmap newImage = new Bitmap(new MemoryStream(StringToByteArray(hex))); 

public static byte[] StringToByteArray(string hex) 
    { 
     hex = hex.Substring(2, hex.Length - 2); 
     if (hex.Length % 2 != 0) 
     { 
      throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hex)); 
     } 

     byte[] HexAsBytes = new byte[hex.Length/2]; 

     for (int index = 0; index < HexAsBytes.Length; index++) 
     { 
      string byteValue = hex.Substring(index * 2, 2); 
      HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture); 
     } 

     return HexAsBytes; 
    } 

을하지만 매개 변수를 점점 유효하지 않습니다 유지 스트림을 비트 맵에로드하려고 할 때. 나는 앱의 개발자에게 문제를 제기하고, 여기에 자신의 반응이다 :

친애하는 알렉스

데이터는 바이너리, 진수 형식으로 저장됩니다. 다음은 이진 데이터를 읽고이를 jpg로 다시 쓰는 방법에 대한 지침입니다.

는 byteData [I]는 = (자리 SHL 4 나 2 *]) +

위의 숫자는 이미 0 내지 15의 숫자로 변환된다고 가정 (숫자 [I 2 + 1 *]). 더 큰 덩어리 (정수 등)로 메모리에 작성하여 스크립트를 최적화하려는 경우 엔디안을 고려해야합니다. 모든 주요 CPU 아키텍처는 리틀 엔디안 (little endian)입니다. 즉 숫자가 실제 값과 반대 순서로 배열 된 바이트로 저장됩니다 (예 : 0x1234가 메모리에 0x3412로 저장 됨). 사람이 나를 도울 수 있다면

1. Python Script: 
iterate over each photo attached to image field in FormConnect xml file 
data = R[i] 

to strip '0x' off front of each blob 
a = data[2:] 
iterate over each byte, write as binary int to array 
for i in range(len(a)/2): 
       b = (int(bin(int(a[i*2],16)),2)<<4) + int(bin(int(a[i*2+1],16)),2) 
       data.append(b) 
write array to binary file 

F = file(outFile,'wb') 
data.tofile(F) 
F.close() 


PHP Script: 
$pic = ""; 
$field = substr($field,2); 
header("Content-Type: image/jpeg"); 
$pic = pack("H*", $field); 
echo $pic; 

, 나는 매우 감사하게 될 것입니다 :

아래 양식에서 BLOB 데이터를 추출하기위한 두 개의 서로 다른 스크립트가 있습니다. 친절한 답변, 알렉스

+0

주어진 16 진수 문자열을 바이트 배열로 변환하여 파일에 저장했습니다. 내 이미지 뷰어에서이 파일을 인식하지 못합니다. – Dialecticus

+0

주어진 배열의 길이는 4,381 바이트입니다. length가 홀수이기 때문에 배열을 endian으로 조정할 수 없습니다. 그리고 Gabe가 말했듯이 이것은 어떤 endianess에서도 유효한 jpg 파일이 아닙니다. 헤더 뒤에 'FF D8 FF E0' 헤더가 없으며 JFIF도 없습니다. – Dialecticus

답변

3

문제는 16 진수 변환 루틴이 아닙니다. 원래 데이터가 올바르게 인코딩되지 않았기 때문입니다. 그 안에있는 모든 0을 기반으로, 난 그냥 원시 비트 맵이라고 말하고 싶지만! 내 생각 엔 그 데이터를 생성 한 프로그램의 제작자가 비트 맵을 출력하기 전에 특정 파일 형식으로 인코딩하는 것을 잊어 버렸다는 것입니다.

+0

Gabe와 Dialecticus 덕분에 응용 프로그램에 대한 업데이트로이 문제가 해결되었습니다. –

관련 문제