[Python] Letture file binario da Vb a Python

Stefano Dal Pra s.dalpra a gmail.com
Gio 1 Nov 2012 11:17:11 CET


2012/11/1 Daniele Varrazzo <piro a develer.com>:
> On 2012-11-01 09:09, Stefano Dal Pra wrote:
>>
>> Mah, direi che fa qualcosa tipo questo:
>
>
> Grazie per il top posting, cosė č facile seguire domande e risposte no?

Si', per alcuni e' piu' facile.

> Riordino...
>
>
>> On Thu, Nov 1, 2012 at 9:33 AM, orsomannaro a gmail.com
>> <orsomannaro a gmail.com> wrote:
>>>
>>> C'e' qualcuno che sa aiutarmi a convertire questo pezzo di codice VB in
>>> Python?
>
>
>>> Dim Buffer As String * 327
>>>
>>> fileno = FreeFile
>>> Open ".\DATAFILE" For Binary As #fileno
>>> Get #fileno, , Buffer
>
>
>> f = open('DATAFILE','rb')
>> B = f.read(327)
>
>
>
>>> VCod = Hex2(Asc(Mid(Buffer, 9, 1))) & Hex2(Asc(Mid(Buffer, 10,1))) &
>>> Left(Hex2(Asc(Mid(Buffer, 11, 1))), 1)
>
>
>> Vcod = "%02x%02x%02x"%(B[9], B[10], B[11])
>
>
> Mi sembra che Mid sia base 1: in questo caso dovrebbe essere:
>
>     Vcod = "%02x%02x%02x"%(ord(B[8]), ord(B[9]), ord(B[10]))

Sull'a necessita' di ord() mi sono reso conto appena ho provato il
pezzetto di codice,
ahime solo dopo aver cliccato "Send".

Pero' mi rimangono due dubbi:
- sugli esempio di uso stringhe in VB mi sembra che gli indici partano
da 0, come in python.

- Mi sembra che String sia per default unicode (quindi un carattere
--> 2 byte) tranne quando
si specifica direttamente la stringa tra "".
In questo caso B e' un buffer binario, quindi anziche B[n] si dovrebbe
prendere B[2*n : 2*n + 2] ?
O in qualche modo "python way" gestire il caso di stringhe unicode?

Grazie, ciao.
>
>
>>> VCog = Trim(Mid(Buffer, 31, 30))
>>
>> Vcog = B[31:62].strip()
>
>
> Sempre se Mid č base 1, questo sembra pių:
>
>     Vcog = B[30:60].strip(' ')
>
> strip elimina tutti i whitespace, anche tabe crlf, credo Trim() elimini solo
> gli spazi.
>
>
>
>> Se puoi prova ad allegare un "DATAFILE" ed il risultato che da i
>> lcodice originale...
>
>
>
> --
> Daniele Varrazzo - Develer S.r.l.
> http://www.develer.com
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python


Maggiori informazioni sulla lista Python