![]() |
Binär in Hexadizmal
hallo,
könntet ihr mir bitte helfen((habs erst seit paar tage :( , brauche es für die Schule :wall: )), wie man -Dezimal in hexadezimal -Binär in Hexadezimal -Binär in Dezimal -hexadezimal in binär -hexadezimal in Dezimal schreibt also es sollte so aussehen wie das hier: ---------------------------- Dezimal in Binär bin:= ''; dez:= strtoint(Edit1.text); while dez <> 0 do begin R:= dez mod 2; bin:= IntToStr(R)+bin; dez:= dez div 2; end; Label1.caption:= bin; ---------------------------- mit FOR DO und While DO |
Re: Binär in Hexadizmal
Schau dir mal folgende Seite an, dort wird für jedes Zahlensystem erklärt wie man das umrechnet:
![]() |
Re: Binär in Hexadizmal
Dazu must du schonmal die Größe festlegen (wieviel Bytes sind eine Zahl)...
Dezimal in Hexadizimal => ![]() Hexadezimal in Dezimal => teste doch mal StrToInt( '$ff' ) Damit hast du schonmal alles nötige für Hexadezimal und Dezimal, fehlt ja nur noch Binär... Für die umwndlung in Binär brauchst du nicht viel mehr als ![]() ![]() ![]() Binär in Dezimal ist auch nicht viel schwierieger, ebenfalls nur ![]() ![]() Oder universal nach dem Vorschlag von Inherited :zwinker: Dafür brachst du dann vor allem ![]() ![]() Da solltest du dir dann aber noch ![]() ![]() Für den Umgang mit dem Array brauchst du dann wohl noch ![]() ![]() ![]() z.b.:
Delphi-Quellcode:
Const
cDisplay: Array Of Char[ 0..15 ] = ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' ); Bye Christian Edit: Tipfehler beseitigt (Thx Muetze1); |
Re: Binär in Hexadizmal
Zitat:
Delphi-Quellcode:
Const
cDisplay: Array Of Char[ 0..15 ] = '0123456789abcdef'; |
Re: Binär in Hexadizmal
also so läuft es :)
:gruebel: aber nur das ich es mit einer for oder while schleife machen soll..... :gruebel: und in der hilfe kann ich nicht nachschauen, da windows vista die nicht unterstützt..:-( |
Re: Binär in Hexadizmal
Zitat:
Bye Christian Edit: Ich hab mal ein wenig rumgestöbert, da ich damals ganz am Anfang zu meiner Ausbildungszeit sowas programieren mußte... Hab jetzt einfach mal das wichtigste C&P aus dem Src, ka ob das funktionstüchtig ist, auf dem ersten Blick sollte alles bei sein.
Delphi-Quellcode:
Viel Spass
Uses
SysUtils, Math; Type TNumeralSystem = ( nsBin, nsDec, nsHex ); // Unsere Zahlensysteme Const cDisplayDigits: Array[ 0..15 ] Of Char = ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' ); // Buchstaben alle klein! Function GetNSSize( Const NummeralSystem: TNumeralSystem ): Integer; //** Wieviel Zahlen hat das System Begin Case NummeralSystem Of nsBin: Result := 2; nsDec: Result := 10; nsHex: Result := 16; Else Result := -1; End; End; Function CheckNSString( Const NumeralSystemString: String; Const NummeralSystem: TNumeralSystem ): Boolean; //** entspricht der String der Notation des Zahlensystems (Ungültige Zeichen???) Var i: Integer; a: Integer; ConvStr: String; IOResult: Boolean; Begin Result := False; If Length( NumeralSystemString ) > 0 Then Begin ConvStr := LowerCase( NumeralSystemString ); // Großbuchstaben zu Kleinbuchstaben wandeln IOResult := False; For i := 1 To Length( ConvStr ) Do Begin // Jedes Zeichen des übergeben Strings durchgehen IOResult := False; For a := 0 To GetNSSize( NummeralSystem ) - 1 Do Begin // cDisplayDigits durchgehen IOResult := ConvStr[ i ] = cDisplayDigits[ a ]; If IOResult Then Break; // For Schleife abbrechen wenn Zeichen übereinstimmen End; If Not IOResult Then Break; // Abbrechen wenn ein Zeichen nicht gefunden wurde... End; Result := IOResult; End; End; Function GetDecValue( Const aChar: Char ): Integer; //** Zeichen zu dezimalen Wert Var i: Integer; FoundOne: Boolean; Begin Result := -1; For i := Low( cDisplayDigits ) To High( cDisplayDigits ) Do Begin FoundOne := cDisplayDigits[ i ] = aChar; If FoundOne Then Begin Result := i; Break; End; End; If Not FoundOne Then Raise EConvertError.Create( 'Wert für das Numerische Zeichen: "' + aChar + '" kann nicht ermittelt werden' ); End; Function ConvertToDec( Const SrcNumStr: String; Const SrcNumSys: TNumeralSystem ): Int64; //** Konvertiert eine Zahl eines Systems zu einer Dezimalzahl Var ConvStr: String; Len: Integer; i: Integer; NV: Int64; Begin If SrcNumSys <> nsDec Then Begin // Nur aufwendig konvertieren, wenn Anfangssystem nicht Dezimal Result := 0; ConvStr := LowerCase( SrcNumStr ); // Großbuchstaben zu Kleinbuchstaben wandeln Len := Length( ConvStr ); For i := 0 To Len - 1 Do Begin NV := Trunc( IntPower( GetNSSize( SrcNumSys ), i ) ); // passende Potentz ermitteln Result := Result + ( GetDecValue( ConvStr[ Len - i ] ) * NV ); // Wert ausrechnen und zum Ergebniss hinzufügen... End; End Else Begin Result := StrToInt64( SrcNumStr ); End; End; Function NumeralSystemConvert( Const SrcNumStr: String; Const SrcNumSys, DestNumSys: TNumeralSystem ): String; //** Konvertiert eine Zahl eines Systems in ein anderes Zahlensystem Var ConvStr: String; DecConv: Int64; DestP: Integer; Begin Result := ''; ConvStr := LowerCase( SrcNumStr ); // Großbuchstaben zu Kleinbuchstaben wandeln If CheckNSString( ConvStr, SrcNumSys ) Then Begin If Not ( SrcNumSys = DestNumSys ) Then Begin Try DecConv := ConvertToDec( ConvStr, SrcNumSys ); If DestNumSys <> nsDec Then Begin // Wir haben schon ein dezimales Ergebniss, deshalb nur bei nicht dezimalen Zielsystem berechnen... DestP := GetNSSize( DestNumSys ); While DecConv <> 0 Do Begin Result := cDisplayDigits[ DecConv Mod DestP ] + Result; DecConv := DecConv Div DestP; End; End Else Begin Result := IntToStr( DecConv ); End; Except On Error: Exception Do Begin Result := 'ERROR: "' + Error.Message + '"'; End; End; End Else Begin Result := ConvStr; // gleiches Zahlensystem brauch nicht umgewandelt werden... End; End Else Begin Result := 'ERROR: Zeichenfolge konnte wegen ungültiger Zeichen nicht umgerechnet werden.'; End; End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz