AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Countbits fuer intel und non-intel bits.
Thema durchsuchen
Ansicht
Themen-Optionen

Countbits fuer intel und non-intel bits.

Ein Thema von Diablo9876 · begonnen am 15. Jan 2005 · letzter Beitrag vom 16. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Diablo9876

Registriert seit: 25. Jun 2003
35 Beiträge
 
Delphi 7 Personal
 
#1

Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 19:31
Hallo zusammen, habe folgenden code, jetzt moechte ich den aber so umschreiben das er fuer intel und non-intel(BIG-endian) bits zu gebrauchen ist.
Auserdem moechte ich eine Bitrange einbauen: Startbit --> Endbit statt 0 -- > Size.
Hat jemand irgendeine Ahnung wie?
Delphi-Quellcode:
function CountBitsSet(P: Pointer; Count: Cardinal): Cardinal;
const
  lu : packed array[0..15] of Byte = (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);
var
  b: Byte;
begin
  Result := 0;
  while Count > 0 do
  begin
    b := PByte(P)^;
    // lower Nibble
    Inc(Result, lu[b and $0F]);
    // upper Nibble
    Inc(Result, lu[b shr 4]);

    Dec(Count);
    Inc(PByte(P));
  end;
end;
Schonmal recht herzlichen Dank.
Gruss Diablo
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#2

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 20:19
Zitat:
jetzt moechte ich den aber so umschreiben das er fuer intel und non-intel(BIG-endian) bits zu gebrauchen ist.
Alle Prozessoren, mit denen deine Delphi Programme ausgeführt werden (also nur Intel- und AMD-Prozessoren) sind Little-Endian, du musst dich deshalb nicht darum kümmern.
Lukas
  Mit Zitat antworten Zitat
Diablo9876

Registriert seit: 25. Jun 2003
35 Beiträge
 
Delphi 7 Personal
 
#3

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 20:23
Hi, der code ist Bestandteil eines eigenen torrent clients und sollte auch auf nicht Windows Machinen laufen also zb ein MAC.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#4

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 20:28
Heißt das, du überträgst Daten übers Internet?
Und wie wird das übertragen? Als Strings?
Lukas
  Mit Zitat antworten Zitat
Diablo9876

Registriert seit: 25. Jun 2003
35 Beiträge
 
Delphi 7 Personal
 
#5

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 20:51
Die Function die du siehst ist dafuer gedacht zu pruefen ob eine Datei fertig gestellt wurde.
Jetzt moechte ich sie umschreiben fuer Intel 76543210 und non-intel 01234567 bits.
Kleinen Ansatzcode wuerde helfen.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#6

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 21:34
Zitat:
Die Function die du siehst ist dafuer gedacht zu pruefen ob eine Datei fertig gestellt wurde.
Aber das ist doch was lokales, oder muss man dabei Daten versenden?
Lukas
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#7

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 21:49
Du hast doch schon ganz richtig erkannt, daß es CPU-Sache ist, du brauchst dich also nur darum zu kümmern, in welcher Form die Daten ankommen. Wenn du einen LongWord in Delphi hast und schnappst dir dessen Memory-Dump ist die Darstellung byteweise (nicht bit-weise) von links nach rechts (0d1 ist also 0x01000000). Trotzdem werden Rechenoperationen so durchgeführt, als ob die Byte in der "richtigen" Reihenfolge vorliegen würden. Ein SHL um 8 Bit würde also 0x00010000 ergeben. So ist das in den anderen mir bekannten Programmiersprachen auch. Auf einem Prozessor mit "richtiger" Bytereihenfolge sollte das genauso transparent sein.
Es kommt also nur darauf an, wie die Daten vorliegen und wie du sie einliest. Liegen sie in einem Stream im BigEndian-Format vor und du liest sie einfach blind in einen LongWord ein, dann kriegst du auf LittleEndian-Systemen Probleme und musst erst die Reihenfolge der Bytes umkehren (am eifnachsten wohl mit einem einfachen BSWAP).
  Mit Zitat antworten Zitat
Diablo9876

Registriert seit: 25. Jun 2003
35 Beiträge
 
Delphi 7 Personal
 
#8

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 22:09
Und wie koennte so ne Bitswap function aussehen deiner Meinung nach?
Waere nett wen mir jemand auf dem Weg helfen wuerde ist wichtig.

Gruss Diablo
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#9

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 22:11
Für 32bit-Longwords?
Delphi-Quellcode:
function SwapLong(aValue: LongWord): LongWord; assembler;
asm
  BSWAP EAX;
end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Countbits fuer intel und non-intel bits.

  Alt 15. Jan 2005, 22:37
Moin!

@tommie-lie: Hmm, wird aber wohl Probleme auf einem Mac machen, oder?

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:24 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