• Status: Solved
• Priority: Medium
• Security: Public
• Views: 344

# Binary to Hexa Conversion

I have a binary data like this
".....!...?...", here each "." symbol is used for different values, ie, "." may return varied value. All the symbols are of same category. How to get the exact values for each character ?
0
jeyan76_ram
1 Solution

Commented:
How are you seeing it as ...!? are you doing a printf?  If so do a printf("%2.2X %c\n",data,data); this will show you the data in hex and the char (what I consider to be useless).
0

Commented:
I'm not sure what you mean, but I suppose you want the ascii value of the single characters.
If you have

char * s = ".....!...?...";

you can get the single characters' values by using

char singlechar = s[0];

for the first character and so on. "char" is itself a numeric datatype, of course you could use "int" as well.
0

Commented:
for each character in u'r string find the ascii value.

int asciicode;
asciicode=(int)character //type casting //of the character into numeric value.

then use the code--

printf("%x",acsiicode);

this will give u the hex value for that particular character. u can find the hex value for rest of the characters by using a loop ending at the lenght of the string..
0

Commented:
#include <string.h>
#include "bitops.h"

#ifndef BITOPS__H
#define BITOPS__H

#include <stdio.H>
#include <stdlib.h>                             /* For size_t           */
#include <limits.h>                             /* For CHAR_BIT         */
#include "sniptype.h"                           /* For TOBOOL()         */
#include "extkword.h"                           /* For CDECL            */

/*
**  Macros to manipulate bits in any integral data type.
*/

#define BitSet(arg,posn) ((arg) | (1L << (posn)))
#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))
#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))
#define BitTst(arg,posn) TOBOOL((arg) & (1L << (posn)))

/*
**  Macros to manipulate bits in an array of char.
**  These macros assume CHAR_BIT is one of either 8, 16, or 32.
*/

#define SHIFT ((CHAR_BIT==8)?3:(CHAR_BIT==16)?4:8)

#define BitOff(a,x)  ((void)((a)[(x)>>SHIFT] &= ~(1 << ((x)&MASK))))
#define BitOn(a,x)   ((void)((a)[(x)>>SHIFT] |=  (1 << ((x)&MASK))))
#define BitFlip(a,x) ((void)((a)[(x)>>SHIFT] ^=  (1 << ((x)&MASK))))
#define IsBit(a,x)   ((a)[(x)>>SHIFT]        &   (1 << ((x)&MASK)))

/*
**  BITARRAY.C
*/

char *alloc_bit_array(size_t bits);
int   getbit(char *set, int number);
void  setbit(char *set, int number, int value);
void  flipbit(char *set, int number);

/*
**  BITFILES.C
*/

typedef struct  {
FILE *  file;       /* for stream I/O   */
char    rbuf;       /* read bit buffer  */
char    rcnt;       /* read bit count   */
char    wbuf;       /* write bit buffer */
char    wcnt;       /* write bit count  */
} bfile;

bfile * bfopen(char *name, char *mode);
void    bfwrite(int bit, bfile *bf);
void    bfclose(bfile *bf);

/*
** BITSTRNG.C
*/

void bitstring(char *str, long byze, int biz, int strwid);

/*
**  BSTR_I.C
*/

unsigned int bstr_i(char *cptr);

/*
**  BITCNT_1.C
*/

int CDECL bit_count(long x);

/*
**  BITCNT_2.C
*/

int CDECL bitcount(long i);

/*
**  BITCNT_3.C
*/

int CDECL ntbl_bitcount(long int x);
int CDECL BW_btbl_bitcount(long int x);
int CDECL AR_btbl_bitcount(long int x);

/*
**  BITCNT_4.C
*/

int CDECL ntbl_bitcnt(long x);
int CDECL btbl_bitcnt(long x);

#endif /*  BITOPS__H */

unsigned int bstr_i(char *cptr)
{
unsigned int i, j = 0;

while (cptr && *cptr && strchr("01", *cptr))
{
i = *cptr++ - '0';
j <<= 1;
j |= (i & 0x01);
}
return(j);
}

#ifdef TEST

#include <stdlib.h>

int main(int argc, char *argv[])
{
char *arg;
unsigned int x;

while (--argc)
{
x = bstr_i(arg = *++argv);
printf("Binary %s = %d = %04Xh\n", arg, x, x);
}
return EXIT_SUCCESS;
}
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.