大きな数値を小さな文字列に入れるためのカスタム ITOA 関数を作成したかったのですが、これは私がコーディングしたものです:
main(){
printf("itoa(2000000000,36)= '%s'",itoa(2000000000,36));
printf("itoa(36,36)= '%s'",itoa(36,36));
printf("itoa(37,36)= '%s'",itoa(37,36));
return 1;
}
stock itoa(val, base)
{
new buf[1024] = {0,...};
new i = 1023;
new LETTERZ[37] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0};
for(; val && i; --i, val /= base)
buf[i] = LETTERZ[val % base];
return buf[i+1];
}
このページの「C」コードに基づいています: http://www.jb.man.ac.uk/~slowe/cpp/itoa.html
しかし、どういうわけかこれは出力です:
[20:34:35] itoa(2000000000,36)= 'X' [20:34:35] itoa(36,36)= '1' [20:34:35] itoa(37,36)= '1 '
そして、これは完全に間違っています。どの出力が期待できるかはわかりませんが、36 と 37 が同じ出力になることはありません。また、2 000 000 000 を単に「X」にすることはできません。X は 35 であると想定されているためです。 2 000 000 000 ではなく、ZZ は 1295 である必要があると思います... これは 16 進数システムに基づいていますが、すべてのアルファベット文字を使用します。
ここで何が問題なのか誰か教えてもらえますか?
私は PAWN (SMALL とも呼ばれます) と呼ばれる型のない言語を使用していますが、後でこのコードを VB.NET で使用したいと考えています。