splitting digit hex codes into 2 chars

Posted on 2004-09-21
Last Modified: 2010-04-15
Hi i am trying to convert the two digit hex value of unprintable chars into two seperate chars, then i can print them as part of a normal C-String

I Have tried

char char1, char2;
int x1 0x01;

char1 = (x1/16)+'0';
char2 = (x1%16)+'0';

printf("%c %c", char1, char2);

Ok where am I going wrong. Please help
Question by:dublinsoft

Accepted Solution

tzxie2000 earned 43 total points
ID: 12116950
as hex is 0-9,A-F

so  if the high part of x1 is bigger then 9 like int x1 0xA1 you will get error output

so you should check it
for example

char1 = (x1/16)+'0';
char1 = (x1/16-10)+'A';
LVL 86

Expert Comment

ID: 12117007
What about

int x1=0x01;

printf("%2.2x", x1);

LVL 86

Assisted Solution

jkr earned 41 total points
ID: 12117017

char ac[2]
int x1=0x01;

snprintf(ac,2,"%2.2x", x1);


DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

LVL 55

Expert Comment

by:Jaime Olivares
ID: 12117021
you can use standard itoa() function:

char hex[3];
int x1 = 0x01;  /* there is a missing = sign in your example */

itoa (x1, hex, 16);

/* now your digits are hex[0] and hex[1] */
printf("%c %c", hex[0], hex[1]);


Expert Comment

ID: 12121202

void main()
int n=0xAB;
char sol[2];
printf("%c and %c are the 2 digits",sol[0],sol[1]);

PS> Hope this helps

LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 41 total points
ID: 12122609
Just noticed mine and aakash won't work with 1 digit values. Must be:

void main()
int n=0x1;
char sol[3];                   // Buffer must have 3 bytes, for trailing null character
sprintf(sol,"%02X",n);    // Notice the %02X format, will ensure a leading 0 if number has 1 digit only.
printf("%c and %c are the 2 digits",sol[0],sol[1]);

Featured Post

Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Having a file "symlink" to a memory location (Windows) 6 169
Way to improve it 16 61
List out all word 7 261
Computer slow / BSOD 10 43
An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now