# Text zu hex umwandeln c++



## BastiBasti (7. Januar 2009)

Hallo zusammen ....

ich rauf mir die haare aus - ja ich habe wirklich gegoogelt und gesucht und dies und das probiert...


und zwar... ich habe eine feunktion geschrieben mit der ich in einem game ingame was sagen kann obwohl ich es in die console schreibe ... das problem ist nur ich muss dies mit hex sachen eingeben - was mich persönlich stört....

deshalb brauche ich eine möglichkeit wie ich die eingabe in der console ganz normal reinschreiben kann und das programm den eingebenen satz - ja bitte sätze - automatisch in hex umschreibt und dann rausschiesst....

wo ist das problem?

wie bekomme ich zb den satz:

" Hey du - danke das du mir hilfst! "

zu ->48 65 79 20 64 75 20 2D 20 64 61 6E 6B 65 20 64 61 73 20 64 75 20 6D 69 72 20 68 69 6C 66 73 74 21

http://www.canfieldstudios.com/flashmx/asc2hex/index.html

genauso stelle ich mir das vor.... ja ich weiss da ist eine flashsource bei aber ich arbeite nur mit vs - und sonst habe ich auch keine ahnung von flash ...

so wer hat ne idee?
vllt würde es mir sogar reichen wenn mir jmd die source hierrein kopieren könnte


danke


----------



## deepthroat (7. Januar 2009)

Hi.

Das Thema hatten wir schon öfter. Z.B. http://www.tutorials.de/forum/c-c/331426-hex-geht-leider-net.html

Gruß


----------



## flogy92 (7. Januar 2009)

Hallo BastiBasti!

Mit diesem Code kannst du ein Zeichen umwandeln:

```
#include <iostream>

using namespace std;

int main()
{
   char a = 'b';
   int NumWert = (int) a;
   int LowNum = NumWert % 16;
   int HighNum = (NumWert -  LowNum) / 16;
   char HexArray[2];
   
   if(HighNum >= 0 && HighNum <= 9)
   {
      HexArray[0] = (char) (HighNum + 48);
   }
   else
   {
      HexArray[0] = (char) (HighNum + 55);
   }
   if(LowNum >= 0 && LowNum <= 9)
   {
      HexArray[1] = (char) (LowNum + 48);
   }
   else
   {
      HexArray[1] = (char) (LowNum + 55);
   }

   cout << HexArray << endl;
   system("PAUSE");
}
```


_Quelle: http://www.coding-board.de/board/showthread.php?t=6951_

Bitte erst richtig googlen! Ich hab das jedenfalls auf Anhieb gefunden...

EDIT: Ups, zu spät...


MfG flogy92


----------



## BastiBasti (7. Januar 2009)

Ja ihr beiden habt schon recht es gab diese themen oft - doch wie ich schon sagte ich möchte keine einzelnen zeichen sondern zb nen satz - und wenn du google fragst erhälst du entweder nen einstellen umwandler oder sonst komische sachen ....

ich habe gestern schon einiges umgeschrieben rauskopiert und selbst ergänzt aber ...naja ... auch der link hier hat schon was mit hex zutun aber so meine ich das gar net..


so hab nun was - kurz und knackig wie ich es wollte- nur atm nur 1wort oder 1 zeichen übersetzer :


```
#include <iostream>

#include <iterator>

#include <sstream>


using namespace std;

int main()
 {
 std::string name;
 cin>>name;
 
 std::string text = name;
  cout << hex << showbase;
  copy(text.begin(), text.end(),
  ostream_iterator<int>(cout, " "));
  cout << endl;

   system("Pause");
}
```

bei abc
gibs 0x61 0x62 0x63

zeichen(-,*,+) funktionieren auch 

so nun fehlt mir nur noch das das leerzeichen mit verarbeitet wird ....


----------



## deepthroat (7. Januar 2009)

BastiBasti hat gesagt.:


> so nun fehlt mir nur noch das das leerzeichen mit verarbeitet wird ....


Sieht doch schon gut aus.

Kannst du auch gleich so machen:

```
copy(istream_iterator<char>(cin), istream_iterator<char>(),
		 ostream_iterator<int>(cout, " "));
```
Gruß


----------



## BastiBasti (7. Januar 2009)

okay klasse - so ein fehler noch


```
#include <iostream>

#include <iterator>

#include <sstream>



using namespace std;
using std::stringstream;

int main()
 {
 std::string name;
 cin>>name;
 
 std::string text= name;
  cout << hex << showbase;  //showbase für 0x
  copy(istream_iterator<char>(cin), istream_iterator<char>(),
         ostream_iterator<int>(cout, " "));
 
  
  // copy(text.begin(), text.end(),
  //ostream_iterator<int>(cout, " "));
  
  cout << endl;

 


   system("Pause");
}
```

so sieht das ja nun aus - aber wenn ich nun hallo du eingebe dann macht er bei ersten mal nur das 2te wort also hier würde als antwort kommen 0x64 0x75

ich habs weiter probiert und immer bei erstenmal eingeben verschlugt er das erste wort >.<


und jetzt mal ne mega dumme frage aber ich kapiere den copy befehl net ....auf wem bzw was liegt nun der satz in hex darstellung


----------



## deepthroat (7. Januar 2009)

Hi.

Der Fehler kommt daher weil du das erste Wort einliest und es dann natürlich nicht verarbeitest. Warum liest du es denn ein?

Gruß



BastiBasti hat gesagt.:


> und jetzt mal ne mega dumme frage aber ich kapiere den copy befehl net ....auf wem bzw was liegt nun der satz in hex darstellung


Die Frage verstehe ich nicht. Was meinst du damit?


----------



## devDevil (7. Januar 2009)

Das Problem ist, das er den Code nicht selber geschrieben hat (bzw. copy&past).



```
#include <iostream>

#include <iterator>

#include <sstream>



using namespace std; // wofür? du gibst z.B. bei string trotzdem immer std:: an ...
using std::stringstream; // achso den benutzt du also? und davon mal abgesehen used du bereits mit unsing namespace alles aus std ... auch stringstream

int main()
{
    std::string name;
    cin>>name;
 
 std::string text= name; // achso wir haben ja zu viel speicher, da brauchen wir ne kopie!
  cout << hex << showbase;  //showbase für 0x
  copy(istream_iterator<char>(cin), istream_iterator<char>(),
         ostream_iterator<int>(cout, " ")); // ach vorher haben wir so aus lust mal eingelesen, machen wir's doch jetzt nochmal!
 
  
  // copy(text.begin(), text.end(),
  //ostream_iterator<int>(cout, " "));
  
  cout << endl; // ahja okay wir müssen hier unbedingt nen newline reinhauen ... unser programm is danach nicht zu ende ...

 
  system("Pause"); // und wo definierst du die funktion?!
}
```
 ...


----------



## BastiBasti (8. Januar 2009)

> ich habe gestern schon einiges umgeschrieben rauskopiert und selbst ergänzt aber ...naja ... auch der link hier hat schon was mit hex zutun aber so meine ich das gar net..
> 
> 
> so hab nun was - kurz und knackig wie ich es wollte- nur atm nur 1wort oder 1 zeichen übersetzer :




siehe oben niemals behauptet den selber geschrieben zuhaben nur nen wenig verändert- komischer kautz -!

okay hatte erst heute wieder zeit das hier zulesen werde mich morgen wohl daran machen - werde dann das hier editen und dann das fertige oder buggy ding reinschreiben...


----------

