Einfach VBS Script für Zahlen

Ringkeeper

Chef vom Dienst
Thread Starter
Mitglied seit
08.02.2006
Beiträge
2.142
Ort
Neuland
Hallo!
Ich bin grad dabei mir ein Script zu erstellen, welches eine Textdatei mit 16 Stelligen Zahlen (also von 0000000000000000 bis 9999999999999999) ausgiebt. Ich habe bisher

Code:
Dim fso, File, sText
Const ForWriting = 2

Set fso = CreateObject("Scripting.FileSystemObject")
set File = fso.OpenTextFile("zahlen.txt", ForWriting, true)

For i = 0000000000000000 to 9999999999999999
	sText = i & vbCrLf
	File.Write(sText)
Next
File.Close

Set File = nothing
Set fso = nothing

Aber dummerweise beginnt die Datei dann mit 1,2,3 etc und schreibt keine 15 Nullen davor. Geht das irgendwie?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Da VBScript keine richtigen Formatierungsfunktionen kennt, mußt etwas Stringbastelei machen:
Code:
...
sText = Right("000000000000000" & i,16) & vbCrLf
...

Mal abgesehen davon wird das Programm in diesem Jahrhundert nicht mehr fertig durchlaufen und die komplette Datei paßt auf keine verfügbare Festplatte. :confused:
 
wird auf jeden ne weile brauchen ;-D
 
Zuletzt bearbeitet:
Tja, rechne halt nach. Als simples Textfile braucht ein Zeichen ein Byte. Sprich jede Zahl hat 16 Byte. Es gibt 10^16 sechzehnstellige Zahlen. Du hast also 16 * 10^16 Byte die du auf die Platte schreiben willst. Habe mich übrigens verrechnet, sind eher 142 Petabyte. Spar schonmal auf's RAID - einige Millionen wird's wohl kosten. :)

*e* Wozu braucht man sowas denn bitte überhaupt ...
*e2* lol. Nehmen wir an, du schaffst es, 1'000'000 Zahlen pro Sekunde in das File schreiben zu lassen (was nicht passieren wird). Dann dauert's immernoch knapp 317 Jahre. :d
 
Zuletzt bearbeitet:
Müssen die Zahlen immer gleich sein? Also entweder 000000000 oder 111111111 oder 2222222 oder kann es auch 2223254532 sein? "Hauptsache 16 Stellig"?

Seb
 
Man könnte auch den Datentyp Long nehmen. Dann würde man pro Zahl nur noch 8 Byte benötigen. Dann kostet der Spaß nur noch halb so viel Speicherplatz. Allerdings wäre das mit einer Textdatei nicht möglich.
 
naja, ein Zeichen innner File braucht ja 1 byte weil es 256 verschiedene Zustände annehmen kann... Was man machen kann wäre ein Byte nicht numerisch (10 Zeichen von 0-9) nutzen sondern die vollen 256 Zeichen als Zahl betrachten. So käme man mit 7 Byte pro Zahl aus, welche man auch so in einer Textdatei Speichern kann. (256^7 = 72057594037927937 mögliche Zahlen) Ansprechen könnte man das ganze als Char (weiss jetzt net die syntax in vbs, aber ist ja ohnehin ähnlich in allen Sprachen...) und als String zusammenfassen für jede Zahl. Im Prinzip muss man nur nen Converter für ein 256 Zeichen starkes Zahlensystem schreiben. Der Bitüberhang an nutzlosen bits liegt auch bei nur Bits 2 die nicht benötigt würden, allerdings aufgrund des genutzten "Zahlensystems" nicht weg gelassen werden können. Im Fall von 7 Chars pro Zahl wäre man bei einem Speicherbedarf von 10000000000000000 * 7 byte was ... hey.... immerhin nur noch ~62,17 Petabyte sind :d

Nicht zu vergessen der steigende aufwand zum konvertieren :fresse:

Noch Platzsparender kann man dann nur noch bitweise vorgehen. Allerdings ist das nicht in so nem Textfile abzubilden.... minimum 54 Bit um einen ausreichend grossen zahlenbereich zu erhalten... macht dann 59,95 Petabyte, kleiner lässt sich ein solcher Zahlenraum dann nicht mehr darstellen (Vorausgesetzt man trimmt vorangestelle nullen nicht weg)

Ne Zahl wäre dann zum Beispiel:

Die Ascii zeichen einzeln Ø¥‰A]

entspricht folgenden Dezimalzahlen 216 165 137 65 93

dann rechnet man jede Stelle einzeln in Dezimal um

93 = 93 * 256^0
16640 = 65 * 256^1
8908425 = 137 * 256^2
2768240640 = 165 * 256^3
927712935936 = 216 * 256^4

und addiert sie auf erhät man das Dezimale Ergebnis: 930490101734

also wäre Ø¥‰A] in einem ich nenns mal ASCII Zahlensystem im Dezimalsystem 930490101734

so, das reicht... :d
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh