Salve,
sto cercando di leggere con uno script PHP un campo BLOB memorizzato in un db MySQL, ma non riesco ad ottenere i valori corretti. In rete non trovo nulla di utile e quindi lancio il sasso nello stagno del forum.
Ho un campo blob di 1157 bytes, che rappresenta una serie di 288 valori numerici, così costruito:
i primi 5 bytes, rappresentano 5 parametri dell'intero blob (quanti valori ci sono, di che tipo, ecc...)
successivamente ho i valori numerici rappresentati da 4 bytes alla volta: ovvero i bytes da 6 al 9 (compresi) rapprsentano il primo valore, dal 10 al 13 (compresi) il secondo valore...

Fino ad ora ho utilizzato uno script matlab così costruito:
for d = 1:dimensione_Blob
for n = 1:numero_valori //numero_valori=288
a = typecast([Blob{d}(n*4+2) Blob{d}(n*4+3) Blob{d}(n*4+4) Blob{d}(n*4+5)],'single');
dati(d,n) = roundn(a,-2);
end;
end;

ed uno in C:
void __declspec(dllexport) __stdcall EspandoBlob(unsigned char Blob[],int *nOss,float ValoreOssFloat[])
{
int i;
union {
float f;
int i;
unsigned char cf[4];
} mem;

// decomprimo il blob nei dati veri
if (Blob[0] == 1) { // è una serie di float
mem.cf[0]=Blob[1]; // quanti sono i dati
mem.cf[1]=Blob[2];
mem.cf[2]=Blob[3];
mem.cf[3]=Blob[4];
*nOss=mem.i;
for (i=0;i<*nOss;i++) {
mem.cf[0]=Blob[i*4+5]; // i dati
mem.cf[1]=Blob[i*4+5+1];
mem.cf[2]=Blob[i*4+5+2];
mem.cf[3]=Blob[i*4+5+3];
ValoreOssFloat[i]=mem.f;
} // for tutti i valori
return;
} // tipo
Mi sapete suggerire come tradurlo in PHP?
Ho provato molte strade ma ottengo sempre cose diverse (faccine, simboli, numeri vari...) da quelle che voglio (valori numerici come 10132,10102...).
L'ultimo vano tentativo che ho fatto è:
$result = mysql_query($query);
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){
$valori[] = $row["Valori"];
}
$valtemp2=substr($valori[0],5,4);
prova1=hexdec($valtemp2);
oppure
prova2=bindec($valtemp2);
ecc...

Grazie