|
변환문자열함수가 따로 있는지 없는지 몰겠습니다만...
만들어 쓰시면 될것 같습니다.
unsigned __int64 는 0 에서 18446744073709551615 까지 표현이 가능하네요 (21자리.. 조금..까지)
정수형으로 20자리까지는 unsigned __int64 사용하면 문제 없을같구요
unsigned __int64를 String으로 변환하는 함수는 아래와 같이 만들어 쓰시면 될것 같습니다.
대충 생각나는데로 만들어 봤습니다.
그래서 스마트한 코드가 못됩니다.
충분히 테스트해보빈 못했는데... 크게 지장은 없을겁니다.
그럼
String __fastcall UnSignIntToStr( unsigned __int64 kk)
{
unsigned int tmp;
String str;
tmp=kk/100000000000000;
str=IntToStr(tmp);
tmp=(kk%100000000000000)/10000000;
str=str+IntToStr(tmp);
tmp=(kk%100000000000000)%10000000;
str=str+IntToStr(tmp);
return str;
}
unsigned __int64 __fastcall StrToUnSignInt64(String str)
{
unsigned __int64 tmp=0,tmp1,tmp2,tmp3;
//int = "0 ~ 4294967295";
int len=str.Length();
if(len>15)
{
tmp=StrToInt(str.SubString(1,len-15));
tmp1=tmp*1000000000000000;//tmp*10^15;
tmp=StrToInt(str.SubString(len-15+1,7));
tmp2=tmp*100000000 ; //tmp*10^7;
tmp3=StrToInt(str.SubString(len-15+1+7,8)) ; //tmp*10^8;
tmp=tmp1+tmp2+tmp3;
}
else if( len>9)
{
tmp=StrToInt(str.SubString(1,8));
tmp1=tmp*100000000 ; //tmp*10^7;
tmp=StrToInt(str.SubString(len-8,8)) ; //tmp*10^8;
tmp=tmp1+tmp2;
}
else
{
tmp=StrToInt(str);
}
return tmp;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned __int64 kkk;
kkk=18446744073709551615;
ShowMessage(UnSignIntToStr(kkk));
kkk=1234567809123456780;
ShowMessage(UnSignIntToStr(kkk));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
unsigned __int64 kkk=StrToUnSignInt64("12304572047520954");
ShowMessage(UnSignIntToStr(kkk));
kkk=StrToUnSignInt64("572047520954");
ShowMessage(UnSignIntToStr(kkk));
}
//---------------------------------------------------------------------------
아주 큰 수를 쓰려고 님이 쓰신 글 :
: 아주 간단할지도 모르겠는데요
:
: 제가 20자리의 숫자를 표현해야 하는데
:
: __int64가 19짜리까지 되더군요(이게 있는지도 오늘 조사하면서 알았음)
:
: 여기 게시판에서 찾아보니 unsigned __int64도 되는거 같던데
:
: 변환문자열이 I64d가 아닌가 봅니다. 흑흑
:
: unsigned __int64의 변환문자열을 써주시면 감사하겠습니다.
:
: 아참 정수형이 아닌 실수형으로 double로 했더니
:
: 정수형으로 했을 때와 달랐습니다.
:
: 이건 double형이 실수형보다 정확도가 떨어져서 인지 알고 싶습니다.
|