Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Pointer Operationen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.06.2004, 17:17 Uhr
~motze
Gast


Hallo, ich habe folgendes Problem mit einem Pointer.
Folgendes ist definiert:

unsigned char buffer[25][50];
unsigned char *p__buffer;
p_buffer = &buffer[0][0];

D.h. es ist ein mehrdim. char Feld angelegt worden, sowie ein Pointer, welcher auf das erste Element zeigt.
Adresse der ersten Elements sei z.B. 0002F2E3 (-> somit 32 Bit).

Nun möchte ein Teil der ersten 16 Bit der Adresse in eine Variable, sowie die letzten 16 Bit eine andere Variable kopieren.
A = 02 (die ersten beiden Nullen abgeschnitten)
B = F2E3

Hat jemand eine Ahnung wie ich solch eine operation mit einem
Pointer machen kann? Bitmanipulationen verurachen Fehlermeldungen,
sind also nicht möglich.

Gruß
Marco
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.06.2004, 18:06 Uhr
typecast
aka loddab
(Operator)


Was für Fehlermeldungen? Was machst du bis jetzt?

So kommst du an die unteren 16 Bit

C++:
untere_16_bit = p_buffer & 65536;


Glaub ich zumindest
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.06.2004, 18:32 Uhr
0xdeadbeef
Gott
(Operator)



C++:
unsigned long untere_16_bit = ((unsigned long) p_buffer) & 0x0000FFFF;
unsigned long obere_16_bit = (((unsigned long) p_buffer) & 0xFFFF0000) >> 16;


Das ist allerdings spezifisch für 32-bit-Architekturen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 25.06.2004 um 18:34 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.06.2004, 14:09 Uhr
~motze
Gast


Das hab ich selber schon probiert, mag der Compiler aber nicht:

'>>': invalid left operand type
'&': incompatible types
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.06.2004, 14:25 Uhr
0xdeadbeef
Gott
(Operator)


Oh, ja, tschuldigug. Natürlich so:

C++:
unsigned long untere_16_bit = ((unsigned long) p_buffer) & 0x0000FFFFUL;
unsigned long obere_16_bit = (((unsigned long) p_buffer) & 0xFFFF0000UL) >> 16;


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: