1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

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:
    16
    Likes Received:
    3
    Trophy Points:
    0
    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