Oppure

Loading
14/06/11 18:13
blaster
Ciao a tutti, vorrei tradurre questo piccolo programmino creato in python in vb.net così da poterlo inserire in una mia applicazione

print("Insert Host link FCS")
x = input()
fcs = 0

for a in x:
    fcs = ord(a)^fcs

print("FSC = " + hex(fcs))


il problema è nel ciclo, in pratica se ho capito bene for a in x vuol dire che se io metto una stringa in in ingresso tipo "@00RD10000010" a ogni giro lui mi seleziona una lettera e me la converte poi dopo fa la somma e me la converte in esadecimale.

Il programma che avevo pensato (e che non funziona :D) era una cosa tipo questa
 Dim fcs, a As String
        For Each lettera As String In TextBox1.Text
            fcs = Asc(lettera) 
            TextBox2.Text = TextBox2.Text & Hex(fcs)
        Next

solo che non so come tradurre le ultime istruzioni. Penso che l'errore sta nel fatto della somma che deve fare bit a bit.
In pratica questo è un programma che mi calcola il checksum che poi devo trasferire in un mio programma dopo

Ultima modifica effettuata da blaster 14/06/11 22:31
aaa
14/06/11 19:26
Poggi Marco
?? Non riesci a dichiarare una variabile in vb.net ??

Potresti, ad esempio, implementare un ciclo For Each (msdn.microsoft.com/en-us/library/…(v=VS.100).aspx#Y2200)
aaa
15/06/11 12:06
Il Totem
I due codici che hai scritto fanno due cose completamente diverse. Inoltre non puoi usare un foreach sulla proprietà Text. Il foreach serve per enumerare elementi di una collezione: evidentemente una stringa non è una collezione di stringhe, ma al più una collezione di caratteri:
For Each lettera As Char in TextBox1.Text.Chars

Next

Poi, in python esegui uno xor fra ord(a) e fcs, mentre in vb fai un semplice assegnamento. Mi sembrano due operazioni palesemente differenti:
fcs = Asc(lettera) Xor fcs

Infine, ad ogni iterazione, aggiungi il codice del carattere alla textbox, cosa che nello script iniziale non è nemmeno presente.

Il codice seguente è per una console app
Dim x As String
Dim fcs As Int32

Console.WriteLine("Insert Host link FCS")
x = Console.ReadLine()

fcs = 0
For Each a As Char in x.Chars
   fcs = Asc(a) Xor fcs
Next

Console.WriteLine("FCS = {0:X8}", fcs)
aaa