I wrote a small application in Python 2.7 that compares the MSSQL and Sqlite database, and I have some problems with binary data types ( binary , varbinary , image , etc.). On the server side, there is an application that was written in C # that sends data to a mobile device, but converts binary types to hex first.
For instance:
The database has a column with the binary(50) data type and stores the following information:
0x81B5ED7992000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
A C # application will convert it to hex code:
var sb = new StringBuilder(); sb.Append("'"); byte[] data = Encoding.UTF8.GetBytes(value.ToString()); foreach (byte b in data) { sb.Append(string.Format("{0:x2}", b)); } sb.Append("'"); valuesStringBuilder.Append(sb.ToString());
Variables contain this data:
value {byte[50]} [0]: 129 [1]: 181 [2]: 237 [3]: 121 [4]: 146 [5]: 0 [6]: 0 [7]: 0 [8]: 0 [9]: 0 [10]: 0 [11]: 0 [12]: 0 [13]: 0 [14]: 0 [15]: 0 [16]: 0 [17]: 0 [18]: 0 [19]: 0 [20]: 0 [21]: 0 [22]: 0 [23]: 0 [24]: 0 [25]: 0 [26]: 0 [27]: 0 [28]: 0 [29]: 0 [30]: 0 [31]: 0 [32]: 0 [33]: 0 [34]: 0 [35]: 0 [36]: 0 [37]: 0 [38]: 0 [39]: 0 [40]: 0 [41]: 0 [42]: 0 [43]: 0 [44]: 0 [45]: 0 [46]: 0 [47]: 0 [48]: 0 [49]: 0 value.ToString() "System.Byte[]" data {byte[13]} [0]: 83 [1]: 121 [2]: 115 [3]: 116 [4]: 101 [5]: 109 [6]: 46 [7]: 66 [8]: 121 [9]: 116 [10]: 101 [11]: 91 [12]: 93 sb {'53797374656d2e427974655b5d'} Capacity: 32 Length: 28 MaxCapacity: 2147483647
In my python application, I am using pyodbc . From the MSSQL database, I get the data as bytearray:
bytearray(b'\x81\xb5\xedy\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
From the Sqlite database, I can read as a string in Unicode:
u'53797374656d2e427974655b5d'
So I need to convert this bytearray to the same format as the unicode string in order to compare them. I tried to find a solution in Stackoverflow, but always get a completely different line than I expected.
Does anyone know how I can do this?