Toon posts:

[VB] WTF dit is moeilijk te begrijpen :S

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik was even bezig met ene protocol.... nou moet ik dit antwoord hebben.
Every packet you send will begin with a three byte header. The first byte will always have an ASCII value of 0. The second and third bytes make up the size of the packet being sent. It has something to do with high and low order stuff, but I don't know the terminology. The value of the second byte plus 256 times the value of the third byte will be the size of the packet. To find these numbers, you can do integer division and modulus with the packet size and 256. Every packet should be 2045 bytes long, except for the last one, which will have the remaining number of bytes.
nou snap ik dit stukje niet :

(To find these numbers, you can do integer division and modulus with the packet size and 256)

nou weet ik wel wat een interger division is das deze in VB (\) en wat modulus is das deze MOD() maar ik snap gewoon de hele vraag niet :? er moeten dus 2 byte's uit komen.

Verwijderd

Topicstarter
wat !? ik kan niet editten :(

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 16 juli 2002 12:56 schreef The Vaporizer het volgende:
wat !? ik kan niet editten :(
Dan doe ik het wel even :P

Verwijderd

Topicstarter
Op dinsdag 16 juli 2002 13:02 schreef ACM het volgende:

[..]

Dan doe ik het wel even :P
thx, en nu zijn de knopjes er wel weer :P

Verwijderd

Op dinsdag 16 juli 2002 12:55 schreef The Vaporizer het volgende:
ik was even bezig met ene protocol.... nou moet ik dit antwoord hebben.
[..]

nou snap ik dit stukje niet :

(To find these numbers, you can do integer division and modulus with the packet size and 256)

nou weet ik wel wat een interger division is das deze in VB (\) en wat modulus is das deze MOD() maar ik snap gewoon de hele vraag niet :? er moeten dus 2 byte's uit komen.
Ja wat ze bedoelen is dat je een zekere lengte hebt, en nu moet je dus niet de complete lengte in de 2 bytes zetten maar dit:

byte 2 is (lengte AND 0xFF00) >> 8 (8 bits naar rechts geshift)
byte 3 is (lengte AND 0x00FF)

Geen idee of je kunt bitshiften in VB, maar je kunt gewoon door 256 delen.

Dus
Byte2 = (Lengte AND &HFF00) \ 256
Byte3 = (Lengte AND &H00FF)

Verwijderd

Topicstarter
THX het werkt al *D

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

It has something to do with high and low order stuff, but I don't know the terminology.
Hij (of zij) zal wel little endian / big endian bedoelen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op dinsdag 16 juli 2002 13:24 schreef Otis het volgende:

[..]

Geen idee of je kunt bitshiften in VB, maar je kunt gewoon door 256 delen.

Dus
Byte2 = (Lengte AND &HFF00) \ 256
Byte3 = (Lengte AND &H00FF)
Waarom moeilijk doen als het makkelijk kan? Zoals het stukje text al voorstelt heb je alleen \ en mod nodig, geen bitoperators.

Byte2 = Lengte \ 256 (die AND is niet nodig want het is een deling zonder rest)
offtopic:
Overigens had je die AND ook niet nodig als je wel kon bitshiften natuurlijk


Byte3 = Lengte mod 256 (oftewel rest bij deling door 256, oftewel de twee minst significate digits in HEX)

He who knows only his own side of the case knows little of that.


Verwijderd

sounds like msn-file-send

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 16 juli 2002 13:36 schreef RickN het volgende:

[..]

Waarom moeilijk doen als het makkelijk kan? Zoals het stukje text al voorstelt heb je alleen \ en mod nodig, geen bitoperators.

Byte2 = Lengte \ 256 (die AND is niet nodig want het is een deling zonder rest)
offtopic:
Overigens had je die AND ook niet nodig als je wel kon bitshiften natuurlijk


Byte3 = Lengte mod 256 (oftewel rest bij deling door 256, oftewel de twee minst significate digits in HEX)
Ik vind dit eigenlijk veel makkelijker :)

byte1 = word >> 8;
byte2 = word & 0xFF;

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Op dinsdag 16 juli 2002 13:36 schreef RickN het volgende:
[..]
Waarom moeilijk doen als het makkelijk kan? Zoals het stukje text al voorstelt heb je alleen \ en mod nodig, geen bitoperators.

Byte2 = Lengte \ 256 (die AND is niet nodig want het is een deling zonder rest)
offtopic:
Overigens had je die AND ook niet nodig als je wel kon bitshiften natuurlijk


Byte3 = Lengte mod 256 (oftewel rest bij deling door 256, oftewel de twee minst significate digits in HEX)
Ja ik verzin die eis niet, je kunt ook
byte2en3 = lengte AND &HFFFF
doen en die direct over byte 2 en 3 wegschrijven, maar ja dan zit je weer met big-little endian.
De AND heb je wel degelijk nodig, want misschien is lengte wel > 2^16

AND &HFF is sneller dan MOD. Je kunt die and wel vervangen door mod, maar is dat dan wezenlijk anders? Oh en mod 256 is niet restdeling met de 2 minst significante digits, maar gewoon de meest rechtse byte overhouden, iets wat AND &HFF ook doet. :)

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op dinsdag 16 juli 2002 15:43 schreef Otis het volgende:

[..]

Ja ik verzin die eis niet, je kunt ook
byte2en3 = lengte AND &HFFFF
doen en die direct over byte 2 en 3 wegschrijven, maar ja dan zit je weer met big-little endian.
De AND heb je wel degelijk nodig, want misschien is lengte wel > 2^16

AND &HFF is sneller dan MOD. Je kunt die and wel vervangen door mod, maar is dat dan wezenlijk anders? Oh en mod 256 is niet restdeling met de 2 minst significante digits, maar gewoon de meest rechtse byte overhouden, iets wat AND &HFF ook doet. :)
Shit hé, ik ben vandaag in zo'n eigenwijze bui dat ik ziek wordt van mezelf ;) Dus je bent gewaarschuwd ;)

Teneerst had TS moeite met het protocol en specifiek met het \ en mod stukje, dus lijkt het me logisch dat uit te leggen in plaats van met een alternatieve methode te komen. Ten tweede vind ik persoonlijk dat je het gebruik van bitoperators moet vermijden als je ze kunt voorkomen. Ze maken m.i. de zaak onduidelijker, maar dat komt misschien omdat ik zelf niet gewend ben ermee te werken.

Verder ben ik er idd (misschien onterecht) vanuit gegaan dat de lengte < 2^16 is, maar aan de andere kant, als dat niet zo was zou het ook niet in twee bytes passen en dan zou het protocol kapot zijn ;)

Je hebt gelijk in het snelheids aspect, maar het lijkt me dat dat in deze context geen zwaarwegend argument is. En misschien begrijp ik je laatste zin niet goed, maar mod 256 is wel degelijk de rest bij deling door 256 en effectief wil dat zeggen dat je in HEX de twee laatste bytes overhoudt.

Arrgh en nu ga ik stoppen met dit eigenwijse gezeik. Ik denk dat ik vandaag geen vrienden heb gemaakt op GoT en zeker niet op de frontpage :D ;)

He who knows only his own side of the case knows little of that.


Verwijderd

Op dinsdag 16 juli 2002 19:52 schreef RickN het volgende:
Verder ben ik er idd (misschien onterecht) vanuit gegaan dat de lengte < 2^16 is, maar aan de andere kant, als dat niet zo was zou het ook niet in twee bytes passen en dan zou het protocol kapot zijn ;)
Every packet should be 2045 bytes long, except for the last one, which will have the remaining number of bytes.
M.a.w. het kan nooit groter worden dan 16 bits...

Verwijderd

Op dinsdag 16 juli 2002 19:52 schreef RickN het volgende:
[..]
Shit hé, ik ben vandaag in zo'n eigenwijze bui dat ik ziek wordt van mezelf ;) Dus je bent gewaarschuwd ;)
Ach, veel eigenwijzer dan ondergetekende kun je niet zijn ;)
Teneerst had TS moeite met het protocol en specifiek met het \ en mod stukje, dus lijkt het me logisch dat uit te leggen in plaats van met een alternatieve methode te komen. Ten tweede vind ik persoonlijk dat je het gebruik van bitoperators moet vermijden als je ze kunt voorkomen. Ze maken m.i. de zaak onduidelijker, maar dat komt misschien omdat ik zelf niet gewend ben ermee te werken.
Ik denk dat dit het punt is. Als ik het woord 'byte' hoor en daar aritmetic mee gedaan moet worden dan denk ik in 1e instantie aan logische operatoren op bitniveau, want dan zie je in 1 oogopslag wat je bedoeling is mbt de bytes.
Verder ben ik er idd (misschien onterecht) vanuit gegaan dat de lengte < 2^16 is, maar aan de andere kant, als dat niet zo was zou het ook niet in twee bytes passen en dan zou het protocol kapot zijn ;)
hehe klopt, plus in feite kon het ook niet fout gaan want een integer is in VB6 2 bytes :D
Je hebt gelijk in het snelheids aspect, maar het lijkt me dat dat in deze context geen zwaarwegend argument is. En misschien begrijp ik je laatste zin niet goed, maar mod 256 is wel degelijk de rest bij deling door 256 en effectief wil dat zeggen dat je in HEX de twee laatste bytes overhoudt.
ja ik weet wat mod is maar je sprak over digits, ik begreep je verkeerd, je bedoelde 0xYZ, dus de digits Y en Z, ik dacht, bedoelt ie nu bits of bytes oid? want of het HEX is of niet doet niet ter zake, HEX is ook maar een representatie van binair in het 16 tallige talstelsel
Arrgh en nu ga ik stoppen met dit eigenwijse gezeik. Ik denk dat ik vandaag geen vrienden heb gemaakt op GoT en zeker niet op de frontpage :D ;)
Hier wel hoor :* hehe. Welke thread op de FP?

  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Hiero

De persoon waar ik de discussie mee had heeft die discussie in z'n geheel naar het topic [topic=550892] in PMG gecopieerd.

He who knows only his own side of the case knows little of that.


Verwijderd

Topicstarter
dit is het goede antwoord

second_byte = packet_size % 256 # modulus
third_byte = packet_size / 256 # integer division

Verwijderd

offtopic:
[quote]
Op dinsdag 16 juli 2002 22:18 schreef RickN het volgende:
Hiero

De persoon waar ik de discussie mee had heeft die discussie in z'n geheel naar het topic [topic=550892] in PMG gecopieerd.
[/quote]

Oh, ik zie het, je hebt verwoedde pogingen gedaan een nitwitt iets aan het verstand te brengen hehehe :) Legendarisch: "alles kan in software gedaan worden" -- Justice Strike. (mja, dus wat is je punt, JS?)
Pagina: 1