Gå til innhold

Er det noe vits å gjøre om til bytes?


Anbefalte innlegg

Hepp!

 

Jobber med ett program som sender tekst fra en stasjon til en annen (ala e-mail). Sist jeg jobbet med noe lignende skrev jeg programmet i C# hvor man må gjøre om til en byte-array før man sender. I python sender jeg bare tekst frem og tilbake, men er dette en dum måte å gjøre det på? Er det noen fordeler ved å først gjøre om til bytes før jeg sender teksten, eller er det likesågreit å bare sende som en vanlig streng?

Lenke til kommentar
Videoannonse
Annonse

Tenker du socket-programmering nå?

 

Er ikke mye vits å dele opp i bytes først, siden jeg vil tro at under the hood gjøres dette:

 

buf = raw_input() <-- buf er en streng

sock.send(buf)

 

Vil da tro at socket-klassen gjør noe som dette i C:

send(fd, buf, len(buf), 0);

 

Tror ikke du skal trenge å bruke egne byte-arrays til dette. (en streng _er_ jo faktisk en byte array.)

Lenke til kommentar

En måte er og bruke pickle til og transportere data fram og tilbake.

 

... som tilfeldigvis også er en måte å få boksen sin eid. pickle er fint kun dersom du har full kontroll over 1) den biten som lager dumpen 2) all infrastruktur der dumpen ligger/transporteres 3) den biten som laster dumpen inn igjen.

 

(pickle er *ypperlig* for å lagre en komplisert datastruktur fra en programkjøring til en annen. Litt mindre ypperlig for nettverkstransport).

Lenke til kommentar
  • 2 uker senere...

Hepp!

 

Jobber med ett program som sender tekst fra en stasjon til en annen (ala e-mail). Sist jeg jobbet med noe lignende skrev jeg programmet i C# hvor man må gjøre om til en byte-array før man sender. I python sender jeg bare tekst frem og tilbake, men er dette en dum måte å gjøre det på? Er det noen fordeler ved å først gjøre om til bytes før jeg sender teksten, eller er det likesågreit å bare sende som en vanlig streng?

 

"For Python < 3 'strings' are in fact binary strings and 'unicode objects' are the right text objects (as they can contain any Unicode characters).

 

In Python 3 unicode strings are the 'regular strings' (str) and byte strings are separate objects. "

 

 

[sNIP]

Tror ikke du skal trenge å bruke egne byte-arrays til dette. (en streng _er_ jo faktisk en byte array.)

 

Nja, det kommer veldig ann på. Mener du i python eller generelt. Strenger (slik det er implementert i C) er bytearrayer, strenger slik de er implementert i java er objekter og er ikke implementert som arrays (aka char's etter hverandre i et gitt minneområdet).

 

Men som det ble avklart tidligere så er strenger måten å sende bytes på i python 2.x, mens i python 3.x vil du måtte sende de som

socket.send(b"foo")

hvor da bare socket.send("foo")

ville vært unicode og blitt representert med 2 bytes.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...