Un client a envoyé cet exemple de tableau au format binaire et texte
Binaire:
b'\x0e\xb1C>J\x04\x06?Cf\x05?\x13\xdb\r?l\xa7->h?\xd2>\x83\x8d\xee>pVF>oC\xde>\x9b\x1b\xcb>\xf7k\xc3>:\x8b:>\xe4N!?Ti\x04?\x84pU>\x1a\x92\xef>!P\x0f?\xba\xf7\xf2>u\xe6!>\x91B\t?*?\x06?\x07\xa1$>a\x1d\xec>7\x15\xe0>?\x9f\xf9>\xf4\xe2[>\x86\xca\xee>\xd38\x00?kWT>\x06C\xf4>S@\x0f?\xc4\t\x05?\xd0P\x1c>\x97\x96\x00?z1\x04?`%>>\xc1\x8d\x16?\x1a\x80\xfa>M\xbc\x1b?\xfaUC>5|\x00?\xb8o\xf6>_.Z>\x0c\xb2\xe0>\x0bf\xe8>\x8f(\x0c?\xdf\x13$>\xd0\xd5\xda>N?\xe9>\xe3:5>\xf0z\x0f?\x90(\xf8>\t\xb8\x12?\x9eZD>\x16t\x11?{l\xf4>\xac\xd8U>\xa40\xdb>\r\xbe\x01?\n\xd5\x07?I\xd3[>\xfc1\x11?EN\n?\x02\x92^>{#\x0c?\xb8\x1d\x00?0\xc4\x14?a\x004>\x84m\x0e?L\x1c\n?9\x1aV>GD\xe7>v\x80\x06?$k\xff>3\xc0,>l\x8f\xd3>f\xab\xe3>\xd9\'k>\xa9H\xe5>\xb2;\xdd>Y9\xfb>\xae\x1c1>\xd8\x05\xf3>\xc07\xfa>\xd0\x19X>R\x10\xff>\x96\xe8\x06?|B\xe8>\xbbJ<>)>\x13?\xf3p\xee>\x7f\x916>f#\x00?5z\xd8>\xed\x0c\x04?\x87$<>\x01n\x1c?\x199\x15?\xe8iL>\xd8I\xf4>"\xb7\xeb>I)\x0b?\xca\xd4)>\x15G\xdf>T\xcb\x1a?`L">\x1d7\x04?^\xa1\xf7>\x9dr\xf8>Cg?>*Z\x11?\xe9q\x0e?\x1e4Q>@H\x03?k\xcf\x00?\x89\x82\x03?\x8e\xa0A>DT\x11?\xcb \xeb>\x8c87>\x1f#\x0b?\xdc\xd2\x12?\xb6u\xee>)\t:>b$\x1f?A\x92\x05?\xb8pw>.\xd0\x1e?\x82\x90\xf7>pM\x13?\xd6\xb9r>H\xe6\xf7>~)\x00?\x9f\x94?>\n>\x11?\x83\x92\xef>\xf0m\x0c?\xc6\xab=>\xd0\xaa\x04?j\x89\x03?'
Texte (décodé à l'aide de pandas) :
array('f', [0.19110509753227234, 0.5235029458999634, 0.521091639995575, 0.5541240572929382, 0.1695839762687683, 0.41064000129699707, 0.46592339873313904, 0.19368910789489746, 0.4341082274913788, 0.39669498801231384, 0.3816830813884735, 0.18217173218727112, 0.6301100254058838, 0.5172321796417236, 0.2084370255470276, 0.4679115414619446, 0.5598164200782776, 0.47454625368118286, 0.15810568630695343, 0.5361719727516174, 0.5244013071060181, 0.16077052056789398, 0.46116164326667786, 0.4376618564128876, 0.4875430762767792, 0.21473294496536255, 0.46638888120651245, 0.5008670687675476, 0.20736472308635712, 0.4770738482475281, 0.5595752596855164, 0.5196802616119385, 0.15265202522277832, 0.5022978186607361, 0.5163799524307251, 0.18568944931030273, 0.5881004929542542, 0.4892585873603821, 0.6083419919013977, 0.1907576620578766, 0.5018952488899231, 0.4813210964202881, 0.21306751668453217, 0.43885838985443115, 0.45390352606773376, 0.5474938750267029, 0.1602320522069931, 0.4274125099182129, 0.455561101436615, 0.17698244750499725, 0.5604696273803711, 0.48468446731567383, 0.573120653629303, 0.19175192713737488, 0.5681775808334351, 0.4773901402950287, 0.20883435010910034, 0.4281054735183716, 0.5068061947822571, 0.5305944681167603, 0.21467317640781403, 0.5671689510345459, 0.5402567982673645, 0.21735385060310364, 0.5474163889884949, 0.5004534721374512, 0.5811185836791992, 0.1757826954126358, 0.5563585758209229, 0.5394942760467529, 0.2090844064950943, 0.4516927897930145, 0.5253976583480835, 0.4988642930984497, 0.1687019318342209, 0.4132035970687866, 0.4446670413017273, 0.22964419424533844, 0.4478199779987335, 0.43209606409072876, 0.49067190289497375, 0.17296096682548523, 0.474653959274292, 0.4887065887451172, 0.21103596687316895, 0.4981713891029358, 0.5269864797592163, 0.4536322355270386, 0.1838788241147995, 0.5751672387123108, 0.4657054841518402, 0.17828939855098724, 0.5005401372909546, 0.42280736565589905, 0.5158222317695618, 0.18373309075832367, 0.6110535264015198, 0.5829024910926819, 0.1996227502822876, 0.477125883102417, 0.46038156747817993, 0.5435987114906311, 0.16585078835487366, 0.4360891878604889, 0.6046650409698486, 0.1584944725036621, 0.516465961933136, 0.4836530089378357, 0.48524942994117737, 0.18691734969615936, 0.5677820444107056, 0.5564256310462952, 0.20430037379264832, 0.5128211975097656, 0.5031649470329285, 0.5137105584144592, 0.18908903002738953, 0.5676920413970947, 0.4592345654964447, 0.17892664670944214, 0.5435046553611755, 0.5735299587249756, 0.4657418131828308, 0.18167556822299957, 0.621648907661438, 0.5217629075050354, 0.24164092540740967, 0.6203640699386597, 0.4835243821144104, 0.5754003524780273, 0.2370370328426361, 0.4841787815093994, 0.5006331205368042, 0.18709038197994232, 0.5673528909683228, 0.4679146707057953, 0.5485525131225586, 0.18522557616233826, 0.5182313919067383, 0.5138155221939087])
Les données sont stockées dans une base de données sous forme binaire pour des raisons de taille/commodité. Ils se demandaient s'il existait un moyen de les transformer en nombres utilisables dans JMP. Je pensais que nous pourrions le traiter comme un BLOB et y aller de cette façon, mais je n'ai pas eu de chance.
Réflexions du groupe sur ce que nous pourrions être capables de faire ?
Meilleur,
M
L'astuce consiste à convertir cette chaîne en un encodage pris en charge par Char to Blob(). Heureusement, "ascii-hex" est proche de leur encodage. Le Blob to Matrix peut faire sa magie.
Vous devez également connaître le format des flottants. Un petit essai et une erreur suggèrent qu'il s'agit de flottants little-endian de 4 octets.
in = "\[\x0e\xb1C>J\x04\x06?Cf\x05?\x13\xdb\r?l\xa7->h?\xd2>\x83\x8d\xee>pVF>oC\xde>\x9b\x1b\xcb>\xf7k\xc3>:\x8b:>\xe4N!?Ti\x04?\x84pU>\x1a\x92\xef>!P\x0f?\xba\xf7\xf2>u\xe6!>\x91B\t?*?\x06?\x07\xa1$>a\x1d\xec>7\x15\xe0>?\x9f\xf9>\xf4\xe2[>\x86\xca\xee>\xd38\x00?kWT>\x06C\xf4>S@\x0f?\xc4\t\x05?\xd0P\x1c>\x97\x96\x00?z1\x04?`%>>\xc1\x8d\x16?\x1a\x80\xfa>M\xbc\x1b?\xfaUC>5|\x00?\xb8o\xf6>_.Z>\x0c\xb2\xe0>\x0bf\xe8>\x8f(\x0c?\xdf\x13$>\xd0\xd5\xda>N?\xe9>\xe3:5>\xf0z\x0f?\x90(\xf8>\t\xb8\x12?\x9eZD>\x16t\x11?{l\xf4>\xac\xd8U>\xa40\xdb>\r\xbe\x01?\n\xd5\x07?I\xd3[>\xfc1\x11?EN\n?\x02\x92^>{#\x0c?\xb8\x1d\x00?0\xc4\x14?a\x004>\x84m\x0e?L\x1c\n?9\x1aV>GD\xe7>v\x80\x06?$k\xff>3\xc0,>l\x8f\xd3>f\xab\xe3>\xd9\'k>\xa9H\xe5>\xb2;\xdd>Y9\xfb>\xae\x1c1>\xd8\x05\xf3>\xc07\xfa>\xd0\x19X>R\x10\xff>\x96\xe8\x06?|B\xe8>\xbbJ<>)>\x13?\xf3p\xee>\x7f\x916>f#\x00?5z\xd8>\xed\x0c\x04?\x87$<>\x01n\x1c?\x199\x15?\xe8iL>\xd8I\xf4>"\xb7\xeb>I)\x0b?\xca\xd4)>\x15G\xdf>T\xcb\x1a?`L">\x1d7\x04?^\xa1\xf7>\x9dr\xf8>Cg?>*Z\x11?\xe9q\x0e?\x1e4Q>@H\x03?k\xcf\x00?\x89\x82\x03?\x8e\xa0A>DT\x11?\xcb \xeb>\x8c87>\x1f#\x0b?\xdc\xd2\x12?\xb6u\xee>)\t:>b$\x1f?A\x92\x05?\xb8pw>.\xd0\x1e?\x82\x90\xf7>pM\x13?\xd6\xb9r>H\xe6\xf7>~)\x00?\x9f\x94?>\n>\x11?\x83\x92\xef>\xf0m\x0c?\xc6\xab=>\xd0\xaa\x04?j\x89\x03?]\";
asciihex = substitute(in, "~", "~7E", "\x", "~");
b = char to blob(asciihex, "ascii~hex" );
m = blob to matrix(b, "float", 4, "little");
show(m[1::10]);
// m[Index(1, 10)] = [0.191105097532272, 0.523502945899963, 0.521091639995575, 4.3744989849699e+30, 1.90337728217527e-11, -205521911808, -2.18980242269506e+28, 13724.060546875, -3.52063568238294e+18, -10197822];