Keith said:
Imayam said:
This is my first post to this community..! I am trying to use
64 bit data in 16 Bit dos.Here i have a Borland C 3.1 Compiler in which
i have data types
int = 2 byte
long = 4 byte
float = 4 byte
double =8 byte
long double =80 byte
If you want a 64-bit data type, you could try char[8] (I presume
CHAR_BIT==8), but I doubt that that's what you had in mind.
Here i was trying to use double ..but i couldn,t read it from
the buffer i don't know why ?
I don't know why either. Nobody can possibly guess why if you don't
show us the code.
Is there is any good idea to use 64 bit integer data type in dos 16..?
Oh, you want a 64-bit *integer* type. double is a floating-point
type. Type long long is guaranteed to be at least 64 bits, but it
might not be supported by your compiler.
Hi ..Thanks you ..thanks a lot..
I don't know why either. Nobody can possibly guess why if you don't
show us the code.
Sorry ....I am not writing any code as of now but my basic need is
this ,i want to handle 64 bit data so I just written some test
program..that has nthg to do i have given my code below
memcpy(&Test1,&Buf[30],8); //I am trying to copy 64 bit data from
buffer
val1 = my_atof(Test1,8); //I am using function which will
convert this to double
printf("\n val1=%lf",val1);
////////////////////////////////////
double my_atof(char *src, int len)
{
double result = 0;
char tmp,str[32],str1[32],*endptr;
int i,j;
memset(str1,NULL,32);
for (i = 0,j=len; i <=len; i++,j--)
{
tmp =(int) src [j];
itoa(tmp,str,10);
strcat(str1,str);
}
str1[32]='\0';
printf("\n STRc = %s ",str1);
result = strtod(str1,&endptr);
printf("\n RESLUT = %lf",result);
return result;
}
//////////////////////////////////
Actually I was trying to perform above function it is also not working
for me...
Consider the memory area ..It is Little Endian
0x30 : C0 19 00 00 00 00 00 00 00 00 00 00 00 00 00
-----------------------------------
if I copy the value to my variable using -->
memcpy(&Test1,&Buf[30],8);
i wil get Test1[0] = 0xC0
Test1[1]=0x19;
Test1[1]=0x00; etc....
i calling function ...........
val1 = my_atof(Test1,8);
{
tmp =(int) src [j]; //In first routine i will get
0,0,0,0,0,0,25,192
itoa(tmp,str,10); //I have to convert it to string Other wise it
will take this as
//Ascii Value...so my str
contains ="192"
strcat(str1,str); //Concatinating the string
}
at the End of the Loop i have string ---> 25192
result = strtod(str1,&endptr);
if i convert this into double -------------> i Will get 25192.00000
but the Required Output is -----------> 6592.
More over it is time consuming function. So i want to handle 64 Bit
Data Type effectively .
so How can i achive this ..??
Regards
Imayam