Newsgroup: it.comp.lang.visual-basic
Titolo: conversione numeri binari

esistono funzioni in vb per convertire numeri binari in decimali e
viceversa?

 viceversa?
perchè non la fai?
il peso di ogni digit è uguale a se moltiplicato 2 levato alla n (posisione)

 il peso di ogni digit è uguale a se moltiplicato 2 levato alla n
(posisione)
xe' se c'e' gia' faccio prima ma soprattutto e + ottimale considerando
che devo lavorare pesantemente con dati da dei files

 ha scritto nel messaggio
news:a667dh$53j$1...@lacerta.tiscalinet.it...


oggi mi sento gasato....
-------------
Option Explicit
Public Function Potenza(Num As Integer, Val As Integer) As Integer
Dim I As Integer
Potenza = 1
For I = 1 To Val
    Potenza = Potenza * Num
Next I
End Function
Public Function Bin2Dec(Bin As String) As Integer
Dim I As Integer
Bin2Dec = 0
For I = 1 To Len(Bin)
    If Mid(Bin, I, 1) = "1" Then Bin2Dec = Bin2Dec + Potenza(2, I - 1)
Next I
End Function
Public Function InvertStr(Str As String) As String
Dim I As Integer
InvertStr = ""
For I = Len(Str) To 1 Step -1
    InvertStr = InvertStr & Mid(Str, I, 1)
Next I
End Function
-------------
questo se ti trovi una stringa di uno e di zero...
usa:
Dim decimale As Integer
decimale = Bin2Dec(TuaStringa As String)
attenzione,
se hai il valore meno significativo a destra usa:
Dim decimale As Integer
decimale = Bin2Dec(InvertStr(TuaStringa As String))
abbasta?
se invece hai una cosa diversa in input dillo...
perchè l'ho scritto?
perchè non so capace e voglio vede come me la correggono... ;)))
ciao,
Andrea
P.S. Option Explicit For Ever

 viceversa?
Cerca "binari" sul sito comune
Ciao

Zanna ha scritto:

Giusto per completezza, perche' penso sia sempre meglio abbondare:
l' indirizzo del sito comune e' 
http://www.it-lang-vb.net/
-- 
ciao, hal

 l' indirizzo del sito comune e' 
http://www.it-lang-vb.net/
Eheh, dovrei aggiungerlo alla firma :)
Comunque _in_genere_ quando a una persona interessa lo sa trovare.
Ciao

 End Function
Perché crearsi una funzione che già esiste (StrReverse)???
Ciao
--
Timothy Redaelli
timothy(dot)redaelli(at)email(dot)it
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com

 ha scritto nel messaggio
news:a6816p$bvdmt$1...@ID-87006.news.dfncis.de...


 l'ho rifatta.
hehe,
Questa volta però ho studiato (grazie ad H.P.L.).
Vediamo... la scrivo al volo:
Public Function InvertStr(Str As String) As String
    Dim i As Long
    Dim l As Long
    InvertStr = Str
    l = Len(Str)
    For i = 1 To l \ 2
        Mid$(InvertStr, i, 1) = Mid$(Str, l - i + 1, 1)
        Mid$(InvertStr, l - i + 1, 1) = Mid$(Str, i, 1)
    Next i
End Function
Verificare performances ora :)
Ciao


 ha scritto nel messaggio
news:3c8797a6$1...@news.cis.it...


mi rispondo da solo...
ho perso la gara...
1000000 stringhe da 40 caratteri in 18 secondi la tua
1000000 stringhe da 40 caratteri in 31 secondi la mia
complimenti zanna
ora me la studio...
ciao,
Andrea

 ha scritto nel messaggio news:nCQh8.44309

:)
Non è la metà dei cicli a fare la differenza (anche se marginalmente aiuta).
Il fatto è che usando la & tiri in ballo lo string manager di VB che è molto
pesante e si sente su stringhe lunghe o con molte iterazioni (prova la
differenza con un solo ciclo su Space$(50000)!)
La Mid$() invecie si limita a mettere il carattere al posto giusto (credo
non sia altro che un vrapper della CopyMemory()).
Nota inoltre che la Mid() è ben diversa da Mid$()! La prima lavora sui
variant, la seconda su stringhe.
Ciao


Eheh, regola numero 1: mai scommettere se non si è sicuri di vincere :)
Ciao

 differenza con un solo ciclo su Space$(50000)!)
e qui hai toppato...
non ci provo neanche a mandare la mia oltre i 32K - 1 caratteri...
meglio per la tua che arriva anche a 64K - 1 prima di un overflow sul
contatore.
vabbč, basterebbe cambiare la dichiarazione in qualcosa di piů grande di
integer.
ho provato la differenza su stringhe da 32K...
il risultato č stato... na strage!
meglio che non posto i risultati.
mi riprometto di non usare mai piů l'operatore & che alla prova dei fatti fa
schifo.
non avevo mai provato un test di questo tipo perchč davo troppe cosa per
scontato.
che bello...
ho da riscrive un centinaio di programmi...
ciao e grazie.
Andrea

 ho da riscrive un centinaio di programmi...
Beh, non sempre puoi usare la Mid$()... anzi, quasi mai.
E l'operatore & è quasi sempre decisamente più comodo.
Se usi stringhe corte e per pochi loop non ti conviene cedere alla
tentazione: il gioco non ne vale la candela :)
Ciao

 viceversa?
Cosa intendi per numeri binari?
Nei files i numeri vengono scritti con molti formati
   (byte, integer, long. float, ascii text (a sua volta decimale, hex,
binario(molto molto inusuale)))
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG