Comment passser dun byte à un sbyte ?

Résolu
cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007 - 21 déc. 2006 à 16:46
cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007 - 22 déc. 2006 à 09:54
bonjour tout le monde !
J'ai un petit souci (et oui sinon je ne serai pas en train de poster ici même ^^), quelqu'un connaitrait-il la méthode miracle pour obtenir un sbyte à partir d'un byte ???
un sbyte va de -128 à +128 et un byte de 0 à 255.
La seule méthode disponible pour convertir est celle du system.convert.toSbyte (sous VS2003). Seulement cette méthode ne change que le type de la variable mais pas la valeur ! Cette méthode marche donc uniquement pour les valeurs de 0 à 128, et encore le résultat et faux car il n'a pas convertit en sbyte mais juste changé le type !
Quelqu'un connaitraît il la méthode pour convertir convenablement ? ou au moins la formule de calcul pour passer d'un entier 8 bit non signé à un bit entier signé ???

Merce d'avance !
 

10 réponses

cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007
22 déc. 2006 à 09:54
J'ai réussi !!!!!

en faisant :


Dim i
As
Integer = 0



Dim
j

As



Integer








Dim
buffer(fluxfichier.Length)

As



Byte

binaryreader.Read(Buffer, 0, fluxfichier.Length)


j = 0







While
j < Buffer.Length - 1


Dim
Var1

As



Byte
= 48



Dim
test4

As


Int16 = -256






Dim
Var2

As


SByte






If
buffer(j) > 127

Then



Var2 = System.Convert.ToSByte(test4 + buffer(j))








Else



Var2 = System.Convert.ToSByte(buffer(j))








End



If







'Console.WriteLine(Var2)

la_array(i) = Var2


i += 1


j += 1







End



While
3
je2fb Messages postés 35 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 2 mars 2013
21 déc. 2006 à 16:57
lu

si ca marche pas essaye de faire par comparaison :

dim i1 as byte
dim i2 as sbyte

if i1>127 then
    i2 = 127-i1
else
    i2 = Convert.SByte(i1)
end if
0
je2fb Messages postés 35 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 2 mars 2013
21 déc. 2006 à 17:00
le Convert.ToSbyte ne sert a rien meme mais directement i2 = i1
0
Utilisateur anonyme
21 déc. 2006 à 17:04
Salut,




Dim Var1 As Byte = 114
Dim Var2 As SByte = CSByte(SByte.MinValue + Var1),

----

(Coloration syntaxique automatique par Kenji)





__________
Kenji
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je2fb Messages postés 35 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 2 mars 2013
21 déc. 2006 à 17:26
Exact je me suis planté Mes cours d'elec sont super loin
0
cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007
21 déc. 2006 à 19:54
Malheureusement le CSByte n'est qu'en VS2005 et je suis en 2003...


Donc je ne sais komen faire...
0
Utilisateur anonyme
21 déc. 2006 à 20:22
Tu remplace le CSByte(.. par un System.Convert.ToSbyte(..






__________
Kenji
0
cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007
21 déc. 2006 à 20:25
Hum, j'ai déjà essayé... seulemnt comme j'ai déjà écrit plus haut :
"La seule méthode disponible pour convertir est celle du system.convert.toSbyte (sous VS2003). Seulement cette méthode ne change que le type de la variable mais pas la valeur ! Cette méthode marche donc uniquement pour les valeurs de 0 à 128, et encore le résultat et faux car il n'a pas convertit en sbyte mais juste changé le type !"
0
Utilisateur anonyme
21 déc. 2006 à 20:31
Mais faut aussi garder le reste. Sinon ca sert a rien ce que je fais.



Dim Var1 As Byte = 48
Dim Var2 As SByte = System.Convert.ToSByte(SByte.MinValue + Var1),

----

(Coloration syntaxique automatique par Kenji)





__________
Kenji
0
cs_scoubigee Messages postés 58 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 16 mai 2007
22 déc. 2006 à 09:16
Seulement dans la ligne ci dessous je n'ai pas "SByte.MinValue", peut être du au fait que j'utilise VS2003...
Dim Var2 As SByte = System.Convert.ToSByte(SByte.MinValue + Var1)

Bref, et quand je met une varialbe contenant -128 en Sbyte il me dit qu'il ne peut pas ajouter des bytes à des sbytes...
Ce que j'ai fait j'ai mis -128 en Int16 mais il me traduit mal, exemple :

<colgroup>
<col style=\"WIDTH: 60pt\" width=\"80\" />
<col style=\"WIDTH: 81pt; mso-width-source: userset; mso-width-alt: 3949\" width=\"108\" />
<col style=\"WIDTH: 78pt; mso-width-source: userset; mso-width-alt: 3803\" width=\"104\" />
</colgroup>

----

Byte,
Conversion Sbyte,
Sans Conversion,

----

208,
80,
-48,

----

207,
79,
-49,

----

17,
-111,
17,

----

224,
96,
-32,

----

161,
33,
-95,

----

177,
49,
-79



Un byte 208 devrait devenir un SByte de -48, seulement en procédant comme tu me l'as dit et arrangé avec le Int16 il me donne 80...


Auriez vous une autre idée plizzz ???

Merci
0
Rejoignez-nous