1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

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