Laden...

String vs int - Speicherverbrauch

Erstellt von Gepro vor 14 Jahren Letzter Beitrag vor 14 Jahren 5.697 Views
G
Gepro Themenstarter:in
419 Beiträge seit 2007
vor 14 Jahren
String vs int - Speicherverbrauch

Ich habe eine Telefonnummer

mit Int würde ich 32Bit Speicher "fressen"
Wie sieht es mit Strings aus ?

Wenn ich zb. nr X hätte, würde ich mehr mit Strings verbauchen ?

3.511 Beiträge seit 2005
vor 14 Jahren

Ein Zeichen eines Strings ist ja ein Byte groß. Bei Unicode sind es 2 Bytes. Also entweder 8 oder 16bit. Hast du eine Telefonnummer "12345" würde dies 40Bit (oder 80bit) als String und 32bit als int sein.

Aber was ganz anderes: Eine Telefonnummer kann verschiedene Formate haben. Z.B. "(+49) 12345 9876 - 55". Also Land, Vorwahl, Nummer, Durchwahl. Geht es hier um Datenbanken? Wenn ja, nimm als Telefonnummer ein String.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

3.971 Beiträge seit 2006
vor 14 Jahren

In .NET ist ein Char immer Unicode daher immer 16 Bit groß. Zusätzlich kommt dann bei Strings noch ein Verwaltungsaufwand hinzu.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

0
767 Beiträge seit 2005
vor 14 Jahren

Um Khalids Argument noch zu erweitern:

Grad in Amerika sind Nummern Wie "555-123 HANSI" beliebt, auch wenn die Buchstaben natürlich einer Ziffer entsprechen.

loop:
btst #6,$bfe001
bne.s loop
rts

104 Beiträge seit 2004
vor 14 Jahren

Weiterhin kannst du in einem Int32 keine Telefonnummern speichern die mit 0 beginnen.

Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#

115 Beiträge seit 2008
vor 14 Jahren

Hallo Gepro,

ausserdem solltest Du beachten, dass Telefonnummern nach internationalem Standard (ITU) inklusive Landesvorwahl maximal 15 Stellen lang sein dürfen. Wikipedia

Also: 0049 - 123 - 12345678

Selbst wenn Du die ersten beiden Nullen weglässt bist Du immer noch nicht im speicherbaren Zahlenraum des int32 (4294967295).

Von daher bleibt Dir, wenn Du die Rufnummern korrekt abspeichern willst, nichts anderes übrig, als Strings zu verwenden.

Wenn Du mit einer Datenbank arbeitest, dann würde ich evtl. überlegen, ob ich nicht für die Landesvorwahl, die Ortsvorwahl und die Durchwahl ein eigenes Feld reservieren würde. Aber das ist Ansichtssache...

Grüße,
der Michael

4.207 Beiträge seit 2003
vor 14 Jahren

In .NET ist ein Char immer Unicode daher immer 16 Bit groß. Zusätzlich kommt dann bei Strings noch ein Verwaltungsaufwand hinzu.

Ein Unicode-Zeichen ist nicht per se immer 16 Bit groß. Das variiert je nach Zeichen zwischen 8 und 48 Bit. Siehe http://www.joelonsoftware.com/articles/Unicode.html

Ein Char in .NET hat trotzdem immer 16 Bit - aber aus anderen Gründen.

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

C
401 Beiträge seit 2007
vor 14 Jahren

Hallo Gepro,

Also: 0049 - 123 - 12345678

Selbst wenn Du die ersten beiden Nullen weglässt bist Du immer noch nicht im speicherbaren Zahlenraum des int32 (4294967295).

Von daher bleibt Dir, wenn Du die Rufnummern korrekt abspeichern willst, nichts anderes übrig, als Strings zu verwenden.

Also das ist kein Argument... gibt ja auch Int64... aber eben um die ganzen - / oder sonstwas und die führenden 0 zu speichern bleibt nur ein String.

5.742 Beiträge seit 2007
vor 14 Jahren

Aber auch generell:
Es macht keinerlei Sinn, irgendwelche Mathematischen Operationen mit Telefonnummern durchzuführen (Additionen, etc.).
Desweiteren sind Tausendertrennzeichen oder gar Exponentialschreibweise bei der Ausgabe nicht erwünscht.
Das kann man zwar umgehen, allerdings stellen sich da bei mir sämtliche Nackenhaare zu Berge.

Daher: Telefonnummer: String.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Gepro,

und wenn du nicht gerade alle Telefonnummern der Weltbevölkerung speichern willst, spielt doch der Speicherplatz so gut wie keine Rolle.

herbivore

5.299 Beiträge seit 2008
vor 14 Jahren
ot

Um Khalids Argument noch zu erweitern:

Grad in Amerika sind Nummern Wie "555-123 HANSI" beliebt, auch wenn die Buchstaben natürlich einer Ziffer entsprechen.

Welche Nummernfolge würde das denn bedeuten?
Oder haben die Amis eine buchstaben-Tastatur am Phone?

Der frühe Apfel fängt den Wurm.

2.760 Beiträge seit 2006
vor 14 Jahren

Welche Nummernfolge würde das denn bedeuten?

555-123 42674

Hab auch Buchstaben über der Tastatur stehen. Hat IMHO jedes neue Telefon.

OnTopic: Es ist einfach nicht sinnvoll eine Tel.Nummer als Zahl zu speichern.

5.742 Beiträge seit 2007
vor 14 Jahren

"555-123 HANSI"
Welche Nummernfolge würde das denn bedeuten?

Ich schätze mal: 42674
Pro Buchstabe jeweils die Taste, die man mit einer Handytastatur - und auch an vielen ISDN-Telefonen - (evtl. mehrmals) drücken müsste, um den Buchstaben zu erhalten.

//EDIT:
Schon getippt 😛

Gelöschter Account
vor 14 Jahren

Pro Buchstabe jeweils die Taste, die man mit einer Handytastatur - und auch an vielen ISDN-Telefonen - (evtl. mehrmals) drücken müsste, um den Buchstaben zu erhalten.

welchen handytyps? das ist nicht standardisiert und daher hibt es da durchaus unterschiede.... vor allem was die sonderzeichen angeht.

5.742 Beiträge seit 2007
vor 14 Jahren

welchen handytyps? das ist nicht standardisiert und daher hibt es da durchaus unterschiede....

Tja - das interessiert die "Erfinder" dieser "genialen" Idee wohl leider nicht. Diese "Buchstabennummern" verbreiten sich leider auch in Deutschland immer mehr.

Trotzdem sind sie ja bei sicherlich 90% der in Deutschland verkauften Handys einheitlich (zumindest die Buchstaben).

U
1.578 Beiträge seit 2009
vor 14 Jahren

was sind denn in HANSI fuer sonderzeichen ?

2.760 Beiträge seit 2006
vor 14 Jahren

Gar keine (außer man bedenkt das wenn man von Ziffern ausgeht ein Buchstabe durchaus ein Sonderzeichen wäre).
Jack30Lena meinte glaube ich z.B. den Punkt, das Leerzeichen usw. die so ziemlich jeder Hersteller woanders hin verpflanzt (Aber nur bei SMS relevant)

5.299 Beiträge seit 2008
vor 14 Jahren

welchen handytyps? das ist nicht standardisiert und daher hibt es da durchaus unterschiede....
Tja - das interessiert die "Erfinder" dieser "genialen" Idee wohl leider nicht. Diese "Buchstabennummern" verbreiten sich leider auch in Deutschland immer mehr.){gray}

Ja, sehe ich mein Handy mit neuen Augen.
Findich eiglich wirklich genial, eine Ziffer mit mehrere Buchstaben zu assoziieren, sodaß man immer ein aussprechbares Wort bilden kann.
Sehe ich also mein Handy nochmal mit meinen neuen Augen an - hmm... was sagt man wohl für 0 oder 1?

ü, ß könnte man nehmen, aber so richtig der große Wurf ist das nich 👅

Der frühe Apfel fängt den Wurm.

5.742 Beiträge seit 2007
vor 14 Jahren

Ja, sehe ich mein Handy mit neuen Augen.
Findich eiglich wirklich genial, eine Ziffer mit mehrere Buchstaben zu assoziieren, sodaß man immer ein aussprechbares Wort bilden kann.

Das macht sich ja auch T9 zunutze - dort tippt man ja auch etwas in der Art der "Buchstabennummern" - also z.B. 42556 9358 und es wird "Hallo Welt" daraus (oder aber "Hallo Zelt").

was sagt man wohl für 0 oder 1?
ü, ß könnte man nehmen, aber so richtig der große Wurf ist das nich

Das verstehe ich nicht: Ihren Einsatz finden diese "Buchstabennummern" (Wie heißen die eigentlich mit Fachausdruck?!? Ich weiß, dass es einen gibt) ja vor allem bei Nummern, die man sich merken soll (in der Werbung usw.): "Wählen Sie 0900 VERSICHERUNG".
Da verzichtet man natürlich auf Umlaute (bzw. ersetzt sie durch "ue", "ae", "ss" etc.).

5.299 Beiträge seit 2008
vor 14 Jahren

na, meine Nummer geht ungefähr so:

07251 450032

Wie soll ich mir das jetzt als Wort merken?

Der frühe Apfel fängt den Wurm.

309 Beiträge seit 2007
vor 14 Jahren

Suche halt ein passendes Wort raus ... mann nennt das Vanity-Nummern

Du hast ja pro Ziffer (meist) 3 Zeichen als Alternative zur Auswahl.

mfg Hajoseb

Zum selberfinden von Vanity-Nummer für die eigene Telefonnumer:

Vanity-Rechner

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France

5.299 Beiträge seit 2008
vor 14 Jahren

hmm. "il00fa". also diese Art der Verschlüsselung krankt schon bisserl daran, daß 0 und 1 keine Darstellung haben, wa?

Aber vllt. kann man ja telekom überreden, nurnoch Telefonziffern > 1 auszugeben.

wenn arnold Schwarzenegger und brad pitt sich dafür einsetzen täten...

Der frühe Apfel fängt den Wurm.

309 Beiträge seit 2007
vor 14 Jahren

James Bond war auch ne Doppel-Null 😁

Aber normalerweise geht man ja anders herum vor.

Man hat einen (Firmen-)Namen und sucht eine passende (freie) Rufnummer ...

**"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.” **
Anatole France