Converting a byte to hex code?

Started by
2 comments, last by gimp 23 years, 2 months ago
I''d like to convert a byte in memory to a hex code string. Anyone know how I can do this easily? (I know almost nothing about hex) Many thanks Chris
Chris Brodie
Advertisement
There is a function for converting between numbers and strings and different bases. It is itoa(). It converts an integer to a string. You specify your byte and a pointer to memory and the base you want, here 16, and the function will return that byte as a string, in base 16. Here is a cutout of the example code given in the VC++ 6.0 library. Hope this helps:


#include
#include

void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;

_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );

_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );

_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );

_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );

_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}

Output:

String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2


Assuming you just want it converted to a string for display purposes, printf does what you need:

  char cVal = 69;printf("%0x\n", cVal);  
Cool... thanks all, I went with Jon''s solution simple because I was outputting the text anyway to stdout.

in case anyone every wants to convert an image to hex code to include in a header here some really basic code:

  #include <vector>#include <fstream.h>void main(void){	std::vector<unsigned char> Array;	ifstream file("default.raw", ios::in | ios::binary | ios::nocreate);	if (file.fail())		return;	//Get the files size	file.seekg( 0, ios::end );	unsigned long FileSize = file.tellg();	file.seekg( 0, ios::beg );	//Resize the memory container	Array.resize(FileSize);	file.read( Array.begin(), FileSize );	file.close();	for (unsigned long i=0; i<Array.size()/8; i++)	{		for (unsigned long j=0; j<8; j++)		{			printf("0x%0x, ", Array[i+j]);		}		printf("\n");	}}  


not pretty and you have to drop the last comma but it gets the job done.

I encoded a 192k greyscale font bitmap to hex and included it in my project. The data increased the file by about 60k, not too bad really...(Release mode)

Many thanks to all, no my console will never be without a font...

Chris

Chris Brodie

This topic is closed to new replies.

Advertisement