11 stellige zahl einlesen auch mit . dazwischen
Übersicht

![]() |
DottakopfBetreff: 11 stellige zahl einlesen auch mit . dazwischen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hio Blitzer !
ok ich gebs gleich mal zu... varriablen deklaration und ihre "typen" hab ich kommplett überspungen. Ich wollt mal fragen ob es sein kann, das integer zahlen keine 11 stellingen zahlen hinbekommen ?? also ich les ne ip adresse (noch ohne . dazwischen) mit nummer% = readline(bla) ein und erstelle diese mit writeline(bla,nummer) aus. Macht er aber nicht. Braucht "nummer" ne andere deklaration ? und nochwas, ich möchte eine ip adresse einlesen --->192.186.x.y die punkte sind ja eigentlich strings wie bekomm ich des genauso eingelesen und ausgeben wie es oben geschrieben wurde ? (mit den punkten zwischen den zahlen halt) ~Edit~ achja ich arbeite mit dem "print" befehl kenn da zwar keine einschränkung aber wer weiß ? Code: [AUSKLAPPEN] Global zahl% daten = OpenFile("lol.txt") zahl = ReadLine(daten) CloseFile(daten) print "" +zahl waitkey mfg Dottakopf |
||
- Zuletzt bearbeitet von Dottakopf am Mi, Sep 05, 2007 10:10, insgesamt einmal bearbeitet
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
11-stellig: Nein, die Genauigkeitsgrenze liegt für floats bei 6 Stellen, und Integer speichern -2 Mrd - +2 Mrd, also 10 Stellen.
Ausserdem, wie Du schon erkannt hast ist eine IP-Adresse ja keine klassische Zahl - sie besteht ja aus 4 einzelnen Zahlen. Was also tun? Laden und speichern kannst du es zum einen als String (ql:readstring, ql:writestring), oder aber Du liesst die einzelnen Zahlen aus und speicherst sie als Bytes (da jedes der 4 Subsegmente nur von 0-255 geht). Zusammen gibt das dann wieder einen Integer, der ist auch 4 Byte lang. (ql:Readstring, ql:mid,ql:len,ql:instr.,ql:writebyte). MOMENT! Da gibt es auch noch andere Möglichkeiten... zB. ql:DottedIP Die Onlinehilfe sollte da helfen. Und per Forensuche findet man mehrere Funktionen zum Umwandeln. Viel Erfolg beim Studieren und Probieren. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
DottakopfBetreff: . |
![]() Antworten mit Zitat ![]() |
---|---|---|
cool danke !
genau sowas brauch ich. jedoch versehe ich das "aufsplitten" des integerwerts in einen string ned so ganz. also wenn ich jetzt die ip nummer 192.168.100.50 hab (oder irgendwas ähnliches halt) wie bekomm ich dan dazu die integer zahl raus. Wie ist des nachvollziehbar das aus "1234567" diese ip wird "223.220.28.63"? geht es auch andersrum, also ich hab diese dottedip und möchte einen integer draus machen ? ~edit~ ich möchte halt in einer .txt datei nur die ip bzw den integerwert der ip reinschreiben und das dieser dann ausgeben wird. (blos wie bekomm ich den integer wert) mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
String sind da wirklich angebrachter. Integer solltest du nur benutzen, wenn du mit den Werten noch rechnen willst.
Edit: In der OH wird erläutert, wie die Ip aus der Integerzahl zustande kommt. Mithilfe von gesplitteten Binärzahlen. Du musst also wissen, wie man aus Dezimalzahlen Binärzahlen bekommt und umgekehrt. Dafür gibts den Befehl Bin$, der aber nur Dezimal->Binär abdeckt. Binär->Dezimal hab ich mir eben schnell im Forum gesucht^^ (ist aber auch nicht schwer). Dann brauchst du noch ein wenig Erfahrung, um Strings zu splitten, und voila! du hast deine Integer: Code: [AUSKLAPPEN] ip = 1234567
dIp$ = DottedIP(ip) Print "Ursprungs-Integer: " + ip Print "IP: " + dIp$ ;DottedIp - >Integer:------------ s1$ = nwort$(dIp, 1, ".") s2$ = nwort$(dIp, 2, ".") s3$ = nwort$(dIp, 3, ".") s4$ = nwort$(dIp, 4, ".") z1 = Int(s1$) z2 = Int(s2$) z3 = Int(s3$) z4 = Int(s4$) b1$ = Right(Bin$(z1), 8) b2$ = Right(Bin$(z2), 8) b3$ = Right(Bin$(z3), 8) b4$ = Right(Bin$(z4), 8) b$ = b1$ + b2$ + b3$ + b4$ iIp = binToNum(b$) Print "Binärcode: " + b$ Print "Integer: " + iIp ;-------------------------------- WaitKey: End Function BinToNum(tbin$) let=Len(tbin$) For x=1 To let num=Int(Mid$(tbin$,x,1)) If Not(num=0 Or num=1) Then y=1 Next If y=1 Then Return 0 For x=1 To let z=z+(Int(Mid$(tbin$,x,1)) Shl (let-x)) Next Return z End Function Function nwort$(satz$, wort, trenn$ = " ") If wort < 1 Then Return "" satz$ = satz$ + trenn$ w = 0 pos = 1 While w < wort And pos > 0 While Mid$(satz$, pos, 1) = trenn$ pos = pos + 1 Wend x = pos y = Instr(satz$, trenn$, pos) pos = y w = w + 1 Wend Return Mid$(satz$, x, y - x) End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
DottakopfBetreff: . |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine anstrengugnen, weis ich sehr zu schätzen !
ich hab des bespiel durchgearbeitet aber in diesen string auslese sachen bin ich einfach ne niete ![]() Aber ich hab mir nochmal meine npc funktionen von meinem rpg angeschaut und hab da gemerkt, dass man schon zahlen über 11 stellen anzeigen kann, wäre ja lustig wenn des nicht gehen würde... eure codes waren viel zu umständlich für etwas so simples was ich haben wollte ![]() Da ich nur die zahlen aus der datei angezeigt haben möchte. ließt aus einer text datei eine ip-addresse aus und schreibt diese auf den bildschirm (192.168.100...) Code: [AUSKLAPPEN] Global zeile$ daten = OpenFile("lol.txt") zeile = ReadLine(daten) CloseFile(daten) Print "" + zeile WaitKey hätt ich vielleicht anders formulieren sollen ~ trotzdem nochmal danke, ist gut des mal gesehen zu haben weil ich kann mich nicht ewig davor drücken mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group