Comment passser dun byte à un sbyte ? [Résolu]

cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention - 21 déc. 2006 à 16:46 - Dernière réponse : cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention
- 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 !
 
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention - 22 déc. 2006 à 09:54
3
Merci
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

Merci cs_scoubigee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_scoubigee
je2fb 35 Messages postés dimanche 20 août 2006Date d'inscription 2 mars 2013 Dernière intervention - 21 déc. 2006 à 16:57
0
Merci
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
Commenter la réponse de je2fb
je2fb 35 Messages postés dimanche 20 août 2006Date d'inscription 2 mars 2013 Dernière intervention - 21 déc. 2006 à 17:00
0
Merci
le Convert.ToSbyte ne sert a rien meme mais directement i2 = i1
Commenter la réponse de je2fb
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 21 déc. 2006 à 17:04
0
Merci
Salut,




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

----

(Coloration syntaxique automatique par Kenji)





__________
Kenji
Commenter la réponse de Charles Racaud
je2fb 35 Messages postés dimanche 20 août 2006Date d'inscription 2 mars 2013 Dernière intervention - 21 déc. 2006 à 17:26
0
Merci
Exact je me suis planté Mes cours d'elec sont super loin
Commenter la réponse de je2fb
cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention - 21 déc. 2006 à 19:54
0
Merci
Malheureusement le CSByte n'est qu'en VS2005 et je suis en 2003...


Donc je ne sais komen faire...
Commenter la réponse de cs_scoubigee
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 21 déc. 2006 à 20:22
0
Merci
Tu remplace le CSByte(.. par un System.Convert.ToSbyte(..






__________
Kenji
Commenter la réponse de Charles Racaud
cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention - 21 déc. 2006 à 20:25
0
Merci
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 !"
Commenter la réponse de cs_scoubigee
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 21 déc. 2006 à 20:31
0
Merci
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
Commenter la réponse de Charles Racaud
cs_scoubigee 60 Messages postés lundi 8 mars 2004Date d'inscription 16 mai 2007 Dernière intervention - 22 déc. 2006 à 09:16
0
Merci
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
Commenter la réponse de cs_scoubigee

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.