Datei binär/hexadezimal anzeigen

Hi

Ich versuche grade eine Art Hex-Programm zu basteln. Ich will eine Datei einlesen und die soll dann binär oder hexadezimal in einer Richtextbox oder so angezeigt werden. Ich habe versucht es mit

open datei for binary as #f

versucht. Aber der hat mir in der textbox trodzdem die Buchstaben der Textdatei angezeigt.

Also zum Beispiel:
Test.txt:
Hallo

In der Textbox soll angezeigt werden:
01001000 10001001 11100001 11100001 00101110

Und so als Hexadezimal:
AF99D

(Ob des so stimmt mit den Buchstaben und Zahlen weis ich nicht. :wink:)

Ich hoffe ihr könnt mir helfen.

Vielen Dank
D. Mertins

Hi Daniel,

Ich versuche grade eine Art Hex-Programm zu basteln. Ich will
eine Datei einlesen und die soll dann binär oder hexadezimal
in einer Richtextbox oder so angezeigt werden. Ich habe
versucht es mit

open datei for binary as #f

Der Anfang ist gut, so liest Du die gesamte Datei.

versucht. Aber der hat mir in der textbox trodzdem die
Buchstaben der Textdatei angezeigt.

Also zum Beispiel:
Test.txt:
Hallo

In der Textbox soll angezeigt werden:
01001000 10001001 11100001 11100001 00101110

Und so als Hexadezimal:
AF99D

Du hast etwas falsch verstanden. ‚Binary‘ ist da nur das Verfahren, wie die Datei gelesen wird. Die Zeichen bleiben trotzdem Zeichen.
Du willst den Dateiinhalt binär darstellen. ‚Binary‘ bezeichnet nur das Lesen, mit der Darstellung hat das nichts zu tun.
Bei der Ausgabe muß Du dann schon noch selbst jedes Zeichen in die Form umwandeln, die Du gern hättest. Aus einem ‚A‘ wird dann ‚Hex: 41‘ oder ‚Bin: 1000001‘. Gelesen wird immer das ‚A‘.

Ich hoffe, ich konnte etwas zur Erhellung beitragen.

Gruß, Rainer

Achso…
OK. Vielen Dank. Gibt es da eine Funktion für? Oder muss man alle Zeichen die es so gibt einzeln mit Select case oder sowas umwandeln?

Hi,
Für Hex gibt’s einen Befehl.

Hex:

w = Hex$(Asc("A"))

Bin mußt Du wohl selbst rechnen. Hab ich noch nicht gebraucht und jetzt auch nichts gefunden. ‚Select Case‘ ist aber wohl nicht der richtige Weg.
Ich schreib’s mal schnell, mal sehen, wer schneller ist. :wink:

Gruß, Rainer

Hi,

in ein Modul habe ich geschrieben, …

Option Explicit

Public Function Bin(Wert)
 Dim pos As Integer
 For pos = 0 To 7
 If Wert And 2 ^ pos Then
 Bin = "1" + Bin
 Else
 Bin = "0" + Bin
 End If
 Next
End Function

und das rufe ich im Programm auf…

Private Sub Command1\_Click()
 Wert = Bin(asc("A")
End Sub

… und schon sterht in der variablen ‚Wert‘: ‚01000001‘. :wink:

Gruß, Rainer

Hey das Modul ist super!
Vielen Dank!
*sich auf die Knie wirft und anbetet*
Ich hab schon fast das gesamte Internet durchsucht nach einer Lösung! Das mit dem Hex werde ich damit dann irgendwie auch schaffen.

Mit freundlichen Grüssen

D. Mertins

Hi,

Hey das Modul ist super!

Danke. :wink:

Vielen Dank!
*sich auf die Knie wirft und anbetet*

*g* Nicht so übertreiben.

Ich hab schon fast das gesamte Internet durchsucht nach einer
Lösung! Das mit dem Hex werde ich damit dann irgendwie auch
schaffen.

??? Für Hex gibt’s doch den Befehl in VB, das mußt Du nicht selbst machen.

Wert = Hex$(Asc("A"))

… und schon steht in Wert: ‚41‘.

Gruß, Rainer

Hallo Rainer,

ich habe mir mal das Modul angeschaut und haette da ma ne blöde frage.
Soweit habe ich das verstanden.
Was mit unklar ist, ist der einsatz von „and“ wann gibt er denn true und wann false zurueck?
Das du 8 durchlaeufe mit 2^pos machst ist mit klar.

Aber wann kommt ein true und wann ein false bei dem einsatz wert and 2^pos ?

Aber, ich habe da auch mal ne funktion gebastelt *zwinker* die tut auch ganz anstaendig seine sache. Vorteil dieser Function ist, das du die bitlänge mit angeben kannst und somit zahlen > 255 darstellen kannst :smile:

Private Function Dec2Bin(ByVal Dec As Long,BitLänge as byte) As String
Dim Rest As Long
Do
 Rest = Dec Mod 2 
 Dec2Bin = Rest & Dec2Bin 
 Dec = Dec \ 2 
Loop Until Dec = 0 
Dec2Bin = Right((String$(BitLänge, "0") & Dec2Bin), BitLänge)
End Function

was haelst du von der Variante?

MFG Alex

Hi Anno,

ich habe mir mal das Modul angeschaut und haette da ma ne
blöde frage.
Soweit habe ich das verstanden.
Was mit unklar ist, ist der einsatz von „and“ wann gibt er
denn true und wann false zurueck?

Logische Operation. Beispiel: UND (And)

0100010
1010010

0000010

Das Ergebnis ist eins, wenn das Bit in einem der Operanden gesetzt ist.

ODER (OR)

0100010
1010010

1110010

Das ergebnis ist eins, wenn das Bit in einem der Operanden gesetzt ist, unabhängig vom anderen Operanden.

Exklusiv Oder (EXOR)

0100010
1010010

1110000

Das Ergebnis ist Eins, wenn das bit in genau einem der beiden Operanden gesetzt ist.

2^n liefert immer ein Bit. Ich kann damit prüfen, ob der Wert diese Bit enthält.

Das du 8 durchlaeufe mit 2^pos machst ist mit klar.

Aber wann kommt ein true und wann ein false bei dem einsatz
wert and 2^pos ?

Ergebnis=1 -> True … :wink:

Aber, ich habe da auch mal ne funktion gebastelt *zwinker* die
tut auch ganz anstaendig seine sache. Vorteil dieser Function
ist, das du die bitlänge mit angeben kannst und somit zahlen
> 255 darstellen kannst :smile:

Private Function Dec2Bin(ByVal Dec As Long,BitLänge as byte)
As String
Dim Rest As Long
Do
Rest = Dec Mod 2
Dec2Bin = Rest & Dec2Bin
Dec = Dec \ 2
Loop Until Dec = 0
Dec2Bin = Right((String$(BitLänge, „0“) & Dec2Bin), BitLänge)
End Function

was haelst du von der Variante?

Mod muß ich mir ansehen, macht vermutlich ein logisches AND. :wink:
Typisch Windows, verschiedene Schreibweisen für die selbe Lösung.

Was zum Basteln für Dich. Bastel mal eine Funktion …

Swap (a,b)

… ohne einen Wert in einer Variablen zwischenzuspeichern. :wink:

Vile Spaß. :wink:

Gruß, Rainer

Auflösung
Hi,
noch die Auflösung, für die, die es interessiert …

Private Function Swap(a, b)
 a = a Or b
 b = b Xor a
 a = a Xor b
End Function

Gruß, Rainer

Hallo Rainer,

Mod muß ich mir ansehen, macht vermutlich ein logisches AND.
:wink:
Typisch Windows, verschiedene Schreibweisen für die selbe
Lösung.

Mod ist Modulo.
Also 9 / 5 = 1 (mal 5), Rest 4.

==> 9 Mod 5 = 4

Das hat nix mit Windows zu tun, ist reine Mathematik.

MfG Peter(TOO)

1 Like

Hallo Peter,

Mod ist Modulo.
Also 9 / 5 = 1 (mal 5), Rest 4.

==> 9 Mod 5 = 4

Das hat nix mit Windows zu tun, ist reine Mathematik.

danke. Das habe ich mal gelernt? Ich kann mich nicht erinnern. :wink:
Ich sollte wohl mal wieder in ein paar Bücher sehen.

Gruß, Rainer

Hallo Rainer,

Also 9 / 5 = 1 (mal 5), Rest 4.

danke. Das habe ich mal gelernt? Ich kann mich nicht erinnern.
:wink:

Tja, so haben wir mal in der Schule mit der Division angefangen … :wink:)

Ich sollte wohl mal wieder in ein paar Bücher sehen.

Aber Asterix und Krimis helfen da nicht wirklich weiter :smile:)

MfG Peter(TOO)

Hallo Peter,

Also 9 / 5 = 1 (mal 5), Rest 4.

danke. Das habe ich mal gelernt? Ich kann mich nicht erinnern.
:wink:

Tja, so haben wir mal in der Schule mit der Division
angefangen … :wink:)

MOD kam da aber nicht vor.

Ich sollte wohl mal wieder in ein paar Bücher sehen.

Aber Asterix und Krimis helfen da nicht wirklich weiter :smile:)

Schade. ;-( Asterix liest sich gut. Geht eventuell ein SF-Roman? Von Stanislaw Lem oder so? Auch nicht? Schade. Da muß ich doch wieder Mathebücher kaufen, ich habe nämlich keine mehr. Aber das steht da nicht drin, denke ich. :wink:

Gruß, Rainer