Hello,
I was just wondering if you guys would kindly help me out converting the following code to java. I tried it myself but I am not very good at C or C++. trying to learn it.
Thank you.
---Code Starts ---
Code:
typedef unsigned char byte;
typedef unsigned int uint;
static byte decode_hex[257]={0};
#define hex_none 0x10
#define hex_eofc 0x20
#define sgetc(s) (*((s)++))
int
sreadhex(str, rlen, nread, odd_digit, s)
byte *str;
uint rlen;
uint *nread;
int *odd_digit;
register byte *s;
{
byte *ptr=str;
byte *limit = ptr+rlen;
byte val1 = (byte)*odd_digit;
byte val2;
register char *decoder = (char*)(decode_hex+1);
if (decoder[-1]==0)
{
static char hex_chars[]= "0123456789ABCDEFabcdef";
int i;
memset(decoder-1, hex_none, 257);
for (i=0; i<16+6; i++)
decoder[hex_chars[i]] = (i>=16? i-6: i);
decoder[0] = hex_eofc;
}
if (val1<=0xf) goto d2;
d1: while ((val1=decoder[sgetc(s)])>0xf)
{ if (val1==hex_eofc) {*odd_digit=-1; goto ended;}
}
d2: while ((val2=decoder[sgetc(s)])>0xf)
{ if (val2==hex_eofc) {*odd_digit=val1; goto ended;}
}
*ptr++ = (val1<<4) +val2;
if (ptr<limit) goto d1;
*nread = rlen;
return 0;
ended: *nread = ptr - str;
return 1;
}