Another Hex to String

Discussion in 'C++' started by david_BS, Feb 22, 2013.

  1. david_BS

    david_BS New Member

    Joined:
    Apr 5, 2012
    Messages:
    17
    Likes Received:
    3
    Trophy Points:
    3
    This is a basic attempt to accomplish this, there is already a real big load of code about this matter... I wanted to use a different approach, I created 1 table that contains all the 256 bytes, and i used it to make the conversion.. you look at the code, better

    The tables
    Code:
    /********************************************************************************************************
    
    // By 85
    // boyscout_arg@hotmail.com
    // etalking.com.ar
    // David Riedel
    // 2013
    
    *********************************************************************************************************/
    
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
    
    /////
    /////////////////////////////////////
    
    char* hextabla[] = { //256 BYTES
    	"00","01","02","03","04","05","06","07","08","09",
    	"0A","0B","0C","0D","0E","0F","10","11","12","13",
    	"14","15","16","17","18","19","1A","1B","1C","1D",
    	"1E","1F","20","21","22","23","24","25","26","27",
    	"28","29","2A","2B","2C","2D","2E","2F","30","31",
    	"32","33","34","35","36","37","38","39","3A","3B",
    	"3C","3D","3E","3F","40","41","42","43","44","45",
    	"46","47","48","49","4A","4B","4C","4D","4E","4F",
    	"50","51","52","53","54","55","56","57","58","59",
    	"5A","5B","5C","5D","5E","5F","60","61","62","63",
    	"64","65","66","67","68","69","6A","6B","6C","6D",
    	"6E","6F","70","71","72","73","74","75","76","77",
    	"78","79","7A","7B","7C","7D","7E","7F","80","81",
    	"82","83","84","85","86","87","88","89","8A","8B",
    	"8C","8D","8E","8F","90","91","92","93","94","95",
    	"96","97","98","99","9A","9B","9C","9D","9E","9F",
    	"A0","A1","A2","A3","A4","A5","A6","A7","A8","A9",
    	"AA","AB","AC","AD","AE","AF","B0","B1","B2","B3",
    	"B4","B5","B6","B7","B8","B9","BA","BB","BC","BD",
    	"BE","BF","C0","C1","C2","C3","C4","C5","C6","C7",
    	"C8","C9","CA","CB","CC","CD","CE","CF","D0","D1",
    	"D2","D3","D4","D5","D6","D7","D8","D9","DA","DB",
    	"DC","DD","DE","DF","E0","E1","E2","E3","E4","E5",
    	"E6","E7","E8","E9","EA","EB","EC","ED","EE","EF",
    	"F0","F1","F2","F3","F4","F5","F6","F7","F8","F9",
    	"FA","FB","FC","FD","FE","FF",
    };
    
    //////////////
    
    Bytes to String
    Code:
    void Test1(BYTE* array_de_bytes, char* cadena_de_bytes_en_formato_string){ //Cadena de bytes a string
    
    	for(int i=0; i<(int)strlen( (char*)array_de_bytes); i++)
    		strcat(cadena_de_bytes_en_formato_string,hextabla[(int)array_de_bytes[i]]);
    	printf(cadena_de_bytes_en_formato_string);
    	printf("\n");
    }
    
    //////////
    String to Bytes
    Code:
    void Test2(char* cadena_de_bytes, BYTE* cadena_de_bytes_resultante){//String a cadena de bytes
    
    	int bytes=0;
    	for(int i=0; i<(int)strlen( cadena_de_bytes); i+=2){
    		for(int j=0; j<256; j++){
    			if( cadena_de_bytes[i]==hextabla[j][0] && cadena_de_bytes[i+1]==hextabla[j][1] ){
    				cadena_de_bytes_resultante[bytes++]=j;
    				j=256;
    			}
    		}
    	}
    	for(int x=0; x<(int)strlen( cadena_de_bytes)/2; x++)
    		printf("%X",*(cadena_de_bytes_resultante+x));
    	printf("\n");
    }
    
    ///////
    The test program
    Code:
    int main(){//Programa
    
    	BYTE* array_de_bytes = (BYTE*)"\x68\x68\x68\x68\x68\x68\xFF\xFF\xFF\xFF\x69";
    	char cadena_de_bytes_en_formato_string[256];
    	memset(cadena_de_bytes_en_formato_string,0,sizeof(cadena_de_bytes_en_formato_string));
    	printf("TEST1:\n");
    	Test1(array_de_bytes, cadena_de_bytes_en_formato_string);
    	system("pause");
    
    	char* cadena_de_bytes = (char*)"686868686868FFFFFFFF69\0";
    	BYTE* cadena_de_bytes_resultante = (BYTE*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
    	printf("TEST2:\n");
    	Test2(cadena_de_bytes, cadena_de_bytes_resultante);
    	system("pause");
    
    return 0;
    }
    To get the full project in MSVC++ 6, see attachment
     

    Attached Files:

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice