Hallo,
ich wollte folgendes c++ programm in Java umwandeln, habe jedoch kaum Erfahrungen mit Java. Hab mich trotzdem mal daran versucht. Das Programm soll eine Bytekette nehmen und an einer bestimmten Postion der Reihenfolge nach ein Byte umdrehen. Zuerst einmal mein c++ Programm, welches funktioniert.
[XML]#pragma hdrstop
#pragma argsused
#include <tchar.h>
#include <stdio.h>
#include <iostream>
typedef unsigned char byte;
class BitOps1
{
public:
void printBits32(unsigned int wert)
{
int i = 31;
unsigned int bitmaske = 1 << i;
while (i >= 0) {
std::cout << ((wert & bitmaske) >> i);
i --;
bitmaske >>= 1;
}
std::cout << std::endl;;
}
int dreheByte(unsigned int wert, byte pos)
{
int i = 0;
unsigned int erg = 0;
int j = 0;
while (i <= 31) {
unsigned int testmaske = 1 << i;
unsigned int setmaske = 0;
// Testposiotion ab 10. Bit für die nächsten 8 Bit ändern
if (i == pos) {
j=pos+7;
}
if (j>=pos)
{
testmaske = 1 << j;
j--;
}
if (wert & testmaske) {
setmaske = 1 << i;
}
erg = erg | setmaske;
i++;
}
return erg;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
BitOps1 bits;
unsigned int testwert1 = 0xA8F1B5C1;
byte pos = 10;
bits.printBits32(testwert1);
unsigned int erg = bits.dreheByte(testwert1, pos);
bits.printBits32(erg);
return 0;
}[/XML]
Mein Versuch in Java:
Zeile 33 gibt beim compilieren einen Fehler aus!
Wäre über jegliche Hilfe sehr dankbar!
mfg
ich wollte folgendes c++ programm in Java umwandeln, habe jedoch kaum Erfahrungen mit Java. Hab mich trotzdem mal daran versucht. Das Programm soll eine Bytekette nehmen und an einer bestimmten Postion der Reihenfolge nach ein Byte umdrehen. Zuerst einmal mein c++ Programm, welches funktioniert.
[XML]#pragma hdrstop
#pragma argsused
#include <tchar.h>
#include <stdio.h>
#include <iostream>
typedef unsigned char byte;
class BitOps1
{
public:
void printBits32(unsigned int wert)
{
int i = 31;
unsigned int bitmaske = 1 << i;
while (i >= 0) {
std::cout << ((wert & bitmaske) >> i);
i --;
bitmaske >>= 1;
}
std::cout << std::endl;;
}
int dreheByte(unsigned int wert, byte pos)
{
int i = 0;
unsigned int erg = 0;
int j = 0;
while (i <= 31) {
unsigned int testmaske = 1 << i;
unsigned int setmaske = 0;
// Testposiotion ab 10. Bit für die nächsten 8 Bit ändern
if (i == pos) {
j=pos+7;
}
if (j>=pos)
{
testmaske = 1 << j;
j--;
}
if (wert & testmaske) {
setmaske = 1 << i;
}
erg = erg | setmaske;
i++;
}
return erg;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
BitOps1 bits;
unsigned int testwert1 = 0xA8F1B5C1;
byte pos = 10;
bits.printBits32(testwert1);
unsigned int erg = bits.dreheByte(testwert1, pos);
bits.printBits32(erg);
return 0;
}[/XML]
Mein Versuch in Java:
Java:
package bitops1;
public class BitOps1 {
void printBits32(int wert) {
int i = 31;
int bitmaske = 65536;
while (i >= 0) {
System.out.print((wert & bitmaske) >> i);
i --;
bitmaske >>>= 1;
}
System.out.println();
}
int dreheByte(int wert, byte pos) {
int i = 0;
int erg = 0;
int j = 0;
while (i <= 31) {
int testmaske = 1 << i;
int setmaske = 0;
// Testposiotion ab 10. Bit für die nächsten 8 Bit ändern
if (i == pos) {
j=pos+7;
}
if (j>=pos)
{
testmaske = 1 << j;
j--;
}
if (wert & testmaske) {
setmaske = 1 << i;
}
erg = erg | setmaske;
i++;
}
return erg;
}
public static void main(String[] args) {
BitOps1 bits = new BitOps1();
int testwert1 = 0xA8F1B5C1;
byte pos1 = 10;
int erg = bits.dreheByte(testwert1, pos1);
bits.printBits32(erg);
}
}
Zeile 33 gibt beim compilieren einen Fehler aus!
Wäre über jegliche Hilfe sehr dankbar!
mfg