Avatar billede f2 Nybegynder
24. april 2001 - 13:44 Der er 15 kommentarer og
1 løsning

en -1 byte bliver til en 255 byte ved asc ?!

Jeg modtager noget data (via Winsock) som er forskellig indhold af data..
der er bytes og strings og floats..
Jeg finder den byte jeg skal bruge, ved hjælp af Mid .. men når jeg så siger asc(bytenummer) retunerer den 255 istedet for -1
ved -2 er det 254
ved -3 er det 253
osv...
Er der nogen der kan få den til at vise -1 og IKKE 255 (osv)?
Avatar billede lange Nybegynder
24. april 2001 - 13:50 #1
Normalt er en byte en unsigned værdi (altså kun positive tal), dvs fra 0..255. Hvis du modtager bytes som signede værdier (-128..127) bør du kunne få deres værdier med en Asc(bytenummer)-128.
Avatar billede lange Nybegynder
24. april 2001 - 13:50 #2
doh, Asc(bytenummer)-256 naturligvis
Avatar billede f2 Nybegynder
24. april 2001 - 13:57 #3
well.. den byte jeg modtager kan være oxo være 255 .. men den kan oxo være -1 ..
så, den der løsning går nok ikke!?
Avatar billede lange Nybegynder
24. april 2001 - 14:04 #4
Nej, det kan den ikke - det er enten eller. En byte indeholder kun 8 bits, og kan altså kun antage 2^8=256 forskellige værdier.

Men hvis du kan fortælle mig, hvordan du vil finde ud af, om byten er (un)signed, skal jeg snildt lave en funktion til at give dig den rigtige værdi.
Avatar billede cstern Nybegynder
24. april 2001 - 14:17 #5
bruger du Variant data type til dine data eller er de definerede som Byte?

Avatar billede cstern Nybegynder
24. april 2001 - 14:18 #6
typecast evt:
MinVar = CByte(MinVar)
så er du sikker på at det er en Byte...
Avatar billede cstern Nybegynder
24. april 2001 - 14:20 #7
DetTalJegVilHa = IIf ( CByte(MinVar) < 127, CByte(MinVar), CByte(MinVar) - 256)
Avatar billede f2 Nybegynder
24. april 2001 - 14:20 #8
altså.....
jeg modtager noget data med ex. winsock
jeg henter dataen som VbString...
så udleder jeg fx. nummer 5 char..
bytenummer = mid(tekst,5,1)
og så vil jeg lave det om til et tal..
det tal kan både være -43 og 32
hvis tallet er -1 det bliver lavet om via Asc så bliver det til 255, og ikke -1 som forventet
og hvis det er 23 så bliver det til 23..
andet information har jeg ikke
jeg ved IKKE om det er unassigned eller noget..
Avatar billede cstern Nybegynder
24. april 2001 - 14:21 #9
faktisk vil
DetTalJegVilHa = IIf( MinVar<127, MinVar, MinVar - 256)
også virke...
Avatar billede f2 Nybegynder
24. april 2001 - 14:21 #10
og jeg kan også godt modtager fx. 234 .. så skulle det jo ikke gerne blive til et minus-tal !
Avatar billede cstern Nybegynder
24. april 2001 - 14:25 #11
Hvordan kan det blive negativt hvis det er en character? Asc returnerer pr. def. værdier mellem 0 og 255...
Avatar billede f2 Nybegynder
24. april 2001 - 14:27 #12
det er jo også det jeg siger..
hvis det er -1 så bliver det til 255..
men jeg må lige kigge en ekstra gang, og se om der er noget der viser om det er assigned eller unassigned..
så vender jeg tilbage...
Avatar billede lange Nybegynder
24. april 2001 - 14:28 #13
Jeg tvivler et eller andet sted ret kraftigt på, at du skal forvente at få negative værdier returneret i data fra Winsock
Avatar billede f2 Nybegynder
24. april 2001 - 14:29 #14
nah.. det er ikke hvad du tror det er :)
Avatar billede cstern Nybegynder
24. april 2001 - 14:35 #15
Hvilken enkelt-char kan give værdien -1? Det kan jeg ikke forstå.
Avatar billede f2 Nybegynder
04. maj 2001 - 23:35 #16
ok.. min fejl..
jeg skulle såmen bare lægge fire bytes sammen ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester