Newsgroup: it.comp.lang.visual-basic
Titolo: Valori espressi in binario

Salve e tutti
Qualcuno saprebbe indicarmi come assegnare
un valore in binario ad una variabile di tipo byte ?
Es:
volendo assegnare   1001  direttamente in binario
e non il corrispondente valore (9)
ho provato con esadecimale tramite &xxx& ma non
funziona.

 ha scritto nel messaggio
news:4669c413$0$17952$4faf...@reader1.news.tin.it...

Scusa Valerio ma hai letto bene le proprietà del Type(Byte)...?
0÷255
Come potrebbe mai accettare 1001
Usa un Long eventualmente in modo da poter effettuare operazioni Logiche
boleane.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 funziona.
Forse perchè 1) se è esadecimale NON è binario :) 2) che cavolo è &xxx&?
Ciao 

 un valore in binario ad una variabile di tipo byte ?
Se stai lavorando in 
VB.NET
, puoi usare i metodi che espone la classe 
Convert, passando la stringa che rappresenta il numero binario. Nel tuo 
caso:
         Dim i As Byte
         Dim s As String = "1001"
         i = Convert.ToByte(s, 2)
Occhio a non andare in overflow.
In VB6 non so.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

 ha
scritto:

Ho trovato questa sub scritta in QB, copio & incollo:
BINtoDEC:
 Tp = 1: DEC = 0
  FOR I = LEN(Bin$) TO 1 STEP -1
    IF MID$(Bin$, I, 1) = "1" THEN DEC = DEC + Tp
    Tp = Tp + Tp
  NEXT
RETURN
Per adattala ad un byte devi stare attento al segno e alla lunghezza che non
superi 8 bits.
Poi per convertire l'intero in byte fai
 Byt = Cbyte (DEC &hFF)
Non ho provato ma non dovresti andare in overflow
--
ciao
  Stefano


Ma 1001 in binario non è 9 in base dieci ?
Perchè non dovrebbe accettarlo ?
dim a as byte
a = 9
solo che anzichè 9 voglio assegnare il byte  00001001

ma caspita non ci capisco piů niente.
Dove l'hai letta?
Di solito l'informazione di colore puň essere RGB, cioč avere 3 bytes uno per
Red, Green e Blue, ma quel 777 non puň esserci.
--
ciao
  Stefano

Non ho provato ma non dovresti andare in overflow
Meglio fare
 Byt = Cbyte (DEC &  &hFF)
--
ciao
  Stefano

 ha scritto nel messaggio 
news:p7pk63lsdntf32no0...@4ax.com...

Ti ringrazio.
Ma scusa quel  &hFF cos'è esadecimale ?
f=15     15*10^0 + 15*10^1.. ?
che numero è  &hFF ? come lo si ottiene ?
Ciao



&HFF è la versione esadecimale di un numero, è come dire 255.
Ma dal momento che il basic usa numeri con segno, &hFF sarà visto come -128.
In C si possono usare numeri senza segno, in basic bisogna usare dei trucchetti.
Un modo per aggirare questo limite è usare prima un intero e e poi convertirlo
in byte azzerando i bits più significativi.
Alla fine ti resta un valore ad 8 bits, attenzione però che un &hFF sarà sempre
visto come -128, ma se lo devi per esempio mandare a una seriale non ha
importanza.
--
ciao
  Stefano


Mi permetto di far notare che c'è una svista clamorosa (e sicura fonte di guai):
Byt = Cbyte (DEC AND &hFF)
Ciao
Raf

 come -128.
Ecco , proprio qui volevo arrivare.
Ho l'impressione che in VB ci sia qualche
interpretazione diversa dei bit
Es:  se scrivo il byte  11111111 ho l'impressione
che il primo bit venga interpretato SEGNO
e quindi anzichè leggere 255 legge - 128
Ma il tipo Byte non dovrebbe essere
coma range 0 -255 senza segno ???

 seriale non ha importanza.
No: ripeto, in VB6 &HFF è SEMPRE 255, sia assegnato ad una variabile Byte che (a
maggior ragione) ad un Integer o Long.
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

Byt = Cbyte (DEC AND &hFF)
Vero, ho fatto confusione tra AND e & , ma chiedo venia.
In un altra finestra ho aperto un sorgente C che sto cercando di far funzionare
e lě'  & e  | sono permessi.
--
ciao
  Stefano

maggior ragione) ad un Integer o Long.
Però  Integer o Long hanno il segno, byte efftivamente no, c'è un UNSIGNED CHAR
anche in vb.
--
ciao
  Stefano


Immaginavo che fosse una svista dovuta ad un po' di "mixed language programming"
;-)
Il problema grosso č che VB non ti dice che stai avendo un lapsus, in questo
caso!


 Red, Green e Blue, ma quel 777 non può esserci.
16.777.215 è in decimale, &HFFFFFF è esadecimale :-).
Hai presente i "sedici milioni di colori" ?
Bye, G. 

Hai presente i "sedici milioni di colori" ?
Cacolo, è vero:
0FFFFFFh = 16777215
ieri ero proprio fuso.
--
ciao
  Stefano

ieri ero proprio fuso.
anche oggi, è il C che mi fa male al cervello.
Infatti mi piace molto di + il basic
--
ciao
  Stefano