AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Hex-String nach Binärwert durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

Hex-String nach Binärwert durchsuchen

Ein Thema von hirnstroem · begonnen am 23. Jan 2007 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 09:34
'loha Folks,

eine Adresse (Hexadezimalwert) wird mit einer UserID verodert:

Address := Address or (UserID shl 21);

Wie bekomme ich jetzt am einfachsten die UserID wieder raus? Ich komm nich drauf.

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 09:35
gar nicht?
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 09:54
So so, also ich bin mittlerweile anderer Meinung.

Man erstelle eine Maske welche die herauszufindenden Bits mit Einsen überdeckt. Der rest wird mit nullen gefüllt, die ganze Sache verundert und voilà...
inde deus abest
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 09:59
Moin Hirnstroem,

geht trotzdem nicht.
Sobald die UserID an einer Stelle ein 0-Bit hat, und die Adresse ein 1-Bit geht's schief.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 10:02
Es gibt Operationen, die sind umkehrbar und andere, die NICHT umkehrbar sind.
Dein Beispiel ist nicht umkehrbar. Mit einer kleiner Änderung gehts aber doch:
Address2 := (Address and $000FFFFF) or (UserID shl 21); Und wieder zurück:
Delphi-Quellcode:
Adress := Address2 and $000FFFFF;
UserID := Address2 shr 21;
Natürlich haben UserID und Adress einen begrenzten Wertebereich!
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 10:05
Ein XOR ist auch hervorragend umkehrbar:

A= (A XOR B) XOR B
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 11:41
Okay, ich habe wohl noch etwas verschwiegen. Die Adresse besteht in meinem Falle immer aus 29 Bit (eigentlich 32), von welchen die Adresse selbst nur jeweils die ersten 9 (LSB) benötigt. Die nächsten neun wären eine Server Adresse, dann gibts es noch drei Bits für andere Informationen, die nächsten fünf stellen die UserID dar und die letzten drei beherbergen die Priorität.

Jedenfalls sieht so eine Adresse immer in etwa so aus:

11100000111101010101101010101
****^^
Da diese fünf Bits für die UserID vorgesehen sind, sind sie immer 0, bis sie mit der UserID, welche 21 Stellen nach links verschoben wird verodert werden.

Die 5 Bits bekommt man nun wieder raus, indem eine passende Maske mit dem ganzen verundert wird. Die Maske ist nichts anderes als die Adresse (11100000111101010101101010101) durchgehend mit Nullen versehen, bis auf die Stelle, an welche die UserID gehört, dort müssen Einsen hin. So also: 00011111000000000000000000000

Das ergäbe dann UserID := Address and Maske shr 21

Das Ergebnis ist nun immer genau die UserID. An und für sich einfach, sofern man sich an den Mathematikunterricht erinnern könnte...

Vielen Dank einenweg
inde deus abest
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Hex-String nach Binärwert durchsuchen

  Alt 23. Jan 2007, 12:21
Ja, da muss ich dir zustimmen. Hättest du uns diese Informationen bzw. Eigenheiten von Address vorher mitgeteilt, dann hätte man sie einfach wieder rausholen können. Aber da du keine Einschränkungen gemacht hast, sind alle Bits in Benutzung und wenn das der Fall ist, kannst du das nicht wieder herausholen.

Mit Masken und Bit-Shiftereien sowie logischen Operatoren können wir auch umgehen, aber grundsätzlich poste ich keine Lösungen, wenn sie nicht uneingeschränkt nutzbar wäre für die Fragestellung - und das wäre sie nicht gewesen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz