c++ String to hex

10/05/2011 16:13 Phileman#1
hey ich habe ein programm geschrieben wo ich einen string einlese mein problem ist das der einzulesende string am schlus als hex zahl bzw adresse verwendet werden soll deshalb muss ich den string in eine adresse umwandeln also am besten

const char* -> unsinged

ich würd mich sehr über eure hilfe freuen ^^
10/05/2011 16:17 Medix#2
[Only registered and activated users can see links. Click Here To Register...]

und das ausgeben als hex zahl sollte ja kein problem sein sobald du den string als zahl vorliegend hast.
10/05/2011 16:55 .Infinite#3
Willst du die einzelnen Buchstaben in Hex darstellen(68 61 6C 6C 6f A) oder willst du die Adresse des Strings(zb. 0x12345678) ausgeben
10/05/2011 16:59 Phileman#4
also sagen wirs mal so ich will die adresse von cheatengine übernehmen und in die WriteProcessMemory funktion übernehmen ^^
10/05/2011 19:04 link#5
Hatte mir dafür mal 'ne kleine Funktion geschrieben (Allerdings linear für eine größere Datenmenge, daher müsste das Ergebnis bei einem DWORD gebyteswapped werden):
Code:
        push    8
        push    _buf
        push    _n
        call    hextol

        mov     eax,[_n]
        bswap   eax


  _buf db '12AB34CD',0
  _n dd ?

hextol:
        push    esi edi
        mov     edi,[esp+8+4]
        mov     esi,[esp+8+8]
        mov     edx,[esp+8+12]
        shr     edx,2
        jnc     .loop
        mov     ax,[esi]
        mov     cx,[esi]
        sub     ax,'00'
        sub     cx,'00'
        and     ax,1010h
        shr     ax,4
        imul    ax,7
        sub     cx,ax
        and     cx,0F0Fh
        shl     cl,4
        or      cl,ch
        mov     [edi],cl
        add     esi,2
        inc     edi
        test    edx,edx
        je      .fin
    .loop:
        mov     eax,[esi]
        mov     ecx,[esi]
        sub     eax,'0000'
        sub     ecx,'0000'
        and     eax,10101010h
        shr     eax,4
        imul    eax,7
        sub     ecx,eax
        and     ecx,0F0F0F0Fh
        shl     cl,4
        or      cl,ch
        mov     al,cl
        shr     ecx,16
        shl     cl,4
        or      cl,ch
        mov     ah,cl
        mov     [edi],ax
        add     esi,4
        add     edi,2
        dec     edx
        jnz     .loop
    .fin:
        pop     edi esi
        retn    0Ch
Du könntest aber auch einfach wie Medix bereits meinte atoi oder auch sscanf verwenden:

Code:
char buf[] = "0x12AB";
int n;
sscanf(buf, "0x%X", &n);
printf("n=%X atoi(n)=%X", n, atoi(n));
10/05/2011 21:19 Medix#6
Quote:
Originally Posted by Phileman View Post
also sagen wirs mal so ich will die adresse von cheatengine übernehmen und in die WriteProcessMemory funktion übernehmen ^^
Überleg lieber mal obs nicht noch ne sinnvollere Lösung gibt ;)
10/05/2011 21:35 Phileman#7
boahr ich ich weis das es sinlos ist *___* aber ich will des ja nur als kleine übung machen und ja ich weiß jetzt vll net wie das mit der adresse geht ja dan will ichs wissen auch wenns noch so sinnlos is

mfg ^^
10/05/2011 21:40 Medix#8
Quote:
Originally Posted by Phileman View Post
boahr ich ich weis das es sinlos ist *___* aber ich will des ja nur als kleine übung machen und ja ich weiß jetzt vll net wie das mit der adresse geht ja dan will ichs wissen auch wenns noch so sinnlos is

mfg ^^
und ich habs dir bereits beantwortet ;) Atoi heißt eine der Lösungen.
10/05/2011 22:52 link#9
Lies dir die Antworten nochmal alle in Ruhe durch.
Es wurde schon mehrmals geschrieben, wie du es richtig machst.

@omer36:
Was heißt, es sollte an dich gehen?
Ich wollt halt auch so cool sein wie du :<

@SmackJew:
Krieg dich mal wieder ein, Mr. Schmock
Ich hab doch gar nichts gemacht xD
10/06/2011 01:25 omer36#10
Quote:
Originally Posted by link View Post
Lies dir die Antworten nochmal alle in Ruhe durch.
Es wurde schon mehrmals geschrieben, wie du es richtig machst.

@omer36:
Was heißt, es sollte an dich gehen?
Ich wollt halt auch so cool sein wie du :<

@SmackJew:
Krieg dich mal wieder ein, Mr. Schmock
Ich hab doch gar nichts gemacht xD
[spam]

[/spam]
10/06/2011 21:14 Shadow992#11
Quote:
Originally Posted by link View Post
Lies dir die Antworten nochmal alle in Ruhe durch.
Es wurde schon mehrmals geschrieben, wie du es richtig machst.
Ich bin trotzdem mal so frei und poste eine Funktion dazu:

PHP Code:
string CharToHex(unsigned char dec)
{
    
char buf [5] ;
    
sprintf(buf,"%X"dec);
    
string str=buf;
    if (
str.length()<=1str="0"+str;
    return 
str;

Geht sicher schöner, sollte für deine Zwecke aber genügen. ;)
10/06/2011 21:38 Asul on frenzy#12
string nach Hex in C++

PHP Code:
#include <iostream>
#include <sstream.h>

int main(int argccharargv[])
{

std::string var = "10";
int nr;


stringstream str;
             
str << var;
             
str >> nr;

std::cout <<  hex << nr  << std::endl;  // Gibt ein a aus   



cin.get();
return 
0;


Btw. wieso postet ihr dem Threadsteller nur C oder Assembler Code ? o_O
10/08/2011 16:54 Adroxxx#13
#thread cleaned
#infras send
#post deleted

hf
10/08/2011 20:16 SandMann016#14
#import <vcl|vcl.h>
//StringToHex----------------------------------------------------
int StringToHex(String irgentwas)
{
char *buf = AnsiString(irgentwas).c_str();
return IntToHex(atoi(buf), 0);
}

int IRGENTWASS = StringToHex("24125125");
//In IRGENTWASS steht: 1701EC5 (das 0x ist hierbei nicht dabei, aber ist auch völlig egal...)

//Stimmts? ;)
10/08/2011 22:00 Medix#15
Quote:

//Stimmts?
äh rechne es einfach um dann siehst du obs stimmt!?