Given For e.g,
char input[] = "10011210582553796";
now Hexadecimal of 10011210582553796 is 2391249A8B74C4.
So output unsigned char* should have value,
unsigned char output[8] = {0x00,0x23,0x91,0x24,0x9A,0x8B,0x74,0xC4};
can anyone give a solution to convert given input char* to output char* with above mentioned requirement.
code should run on platform for which __int64/signed long long is not supported.
Thanx in advance...
any solution to convert given char*(number) to required unsigned char*(hex of number)
|
Newbie Member
|
|
| 6Jul2008,12:56 | #1 |
|
Mentor
|
![]() |
| 15Jul2008,15:40 | #2 |
|
It's easy enough, how far have you got and where are you stuck? We won't write your program for you (unless you're willing to pay) but we'll help you debug it.
|
|
Newbie Member
|
|
| 15Jul2008,21:36 | #3 |
|
found the solution
Code:
int number = 0;
char numberchars[] = "12545555685986589";
int i = 0;
int ans = 0;
int carry = 0;
char answerArray[100] = {0};
char remainderArray[100] = {0};
int remindex = 0;
int ansindex = 0;
int remainder = 0;
while( numberchars[i] != '\0' )
{
while( numberchars[i] != '\0' )
{
char currentchar[2] = {0};
currentchar[0]=numberchars[i];
int num = atoi(currentchar);
num += remainder;
remainder = 0;
if ( num < 2 )
{
remainder = num;
if(i>0)
answerArray[ansindex++] = '0';
}
else
{
remainder = num % 2;
int answer = num / 2;
char a[2] = {0};
itoa(answer,a,10);
answerArray[ansindex++] = a[0];
}
i++;
remainder *= 10;
}
char a[2] = {0};
int rval = remainder / 10;
itoa(remainder / 10,a,10);
remainderArray[remindex++] = a[0];
int size = sizeof(answerArray);
memcpy(numberchars,answerArray,sizeof(answerArray));
size = sizeof(answerArray);
memset(answerArray,0,sizeof(answerArray));
ansindex = 0;
remainder = 0;
i=0;
}
char int64[8] = {0};
for(int k=0;remainderArray[k]!= '\0';k++)
{
int64[7-(k/8)] |= ((remainderArray[k]-'0') << (k%8));
}
Last edited by shabbir; 16Jul2008 at 09:33.. Reason: Code block |

