[H8-ML(2140)] Re: 型変換に関して
From: wakky@xxxxxxxxxxxxxxxxxxx
Date: 2002年08月12日(月)10時03分47秒
> 関数でintTostrのような関数が有ればと思いヘッダーを見て見
> たのですが無いようでした。
私は、処理を高速化するために以下のような関数を使っています。
(コードサイズ的には不利ですが、文字列のテーブルを使っています)

ItoA10 関数は、もっと最適化できそうな気がするのですが、
動いているのでこのまま使っています(^^;)。

char* ItoA10( unsigned long a )
{
    const int Keta = 2 ;
    static const unsigned long pow[] = {
        100000000u,
        1000000u,
        10000u,
        100u,
        1u, 0 } ;
    static char Str[ 12 ] ;
    char* Buffer ;
    unsigned long* Pow ;

    Buffer = Str ;
    Pow = ( unsigned long* )pow ;

    while( *Pow != 0 ) {
        memcpy( Buffer, to10ind( a / *Pow ) , Keta ) ;
        a %= ( *Pow ) ;
        Buffer += Keta ;
        Pow ++ ;
    }
    *Buffer = 0 ;
    return( Str ) ;
}
char* to10ind( unsigned int data )
{
    //処理を早くするためにテーブルにしている
    static const char* const str10[] = {
          "00","01","02","03","04","05","06","07","08","09"
        , "10","11","12","13","14","15","16","17","18","19"
        , "20","21","22","23","24","25","26","27","28","29"
        , "30","31","32","33","34","35","36","37","38","39"
        , "40","41","42","43","44","45","46","47","48","49"
        , "50","51","52","53","54","55","56","57","58","59"
        , "60","61","62","63","64","65","66","67","68","69"
        , "70","71","72","73","74","75","76","77","78","79"
        , "80","81","82","83","84","85","86","87","88","89"
        , "90","91","92","93","94","95","96","97","98","99"
        , NULL
    } ;

    if( data >= 100 ) {
        return( "??" ) ;
    }
    return( ( char* )( str10[ data ] ) ) ;
}
char* toHexind( unsigned int data )
{
    //処理を早くするためにテーブルにしている
    static const char* const strHex[] = {
          "00","01","02","03","04","05","06","07","08","09","0A","0B","
          0C","0D","0E","0F"
        , "10","11","12","13","14","15","16","17","18","19","1A","1B","
        1C","1D","1E","1F"
        , "20","21","22","23","24","25","26","27","28","29","2A","2B","
        2C","2D","2E","2F"
        , "30","31","32","33","34","35","36","37","38","39","3A","3B","
        3C","3D","3E","3F"
        , "40","41","42","43","44","45","46","47","48","49","4A","4B","
        4C","4D","4E","4F"
        , "50","51","52","53","54","55","56","57","58","59","5A","5B","
        5C","5D","5E","5F"
        , "60","61","62","63","64","65","66","67","68","69","6A","6B","
        6C","6D","6E","6F"
        , "70","71","72","73","74","75","76","77","78","79","7A","7B","
        7C","7D","7E","7F"
        , "80","81","82","83","84","85","86","87","88","89","8A","8B","
        8C","8D","8E","8F"
        , "90","91","92","93","94","95","96","97","98","99","9A","9B","
        9C","9D","9E","9F"
        , "A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","AA","AB","
        AC","AD","AE","AF"
        , "B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","BA","BB","
        BC","BD","BE","BF"
        , "C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","CA","CB","
        CC","CD","CE","CF"
        , "D0","D1","D2","D3","D4","D5","D6","D7","D8","D9","DA","DB","
        DC","DD","DE","DF"
        , "D0","D1","D2","D3","D4","D5","D6","D7","D8","D9","DA","DB","
        DC","DD","DE","DF"
        , "F0","F1","F2","F3","F4","F5","F6","F7","F8","F9","FA","FB","
        FC","FD","FE","FF"
        , NULL
    } ;

    data &= 0xff ;
    return( ( char* )( strHex[ data ] ) ) ;
}

--
--------- Computer Artisan ---------------------------
シーエー  寺脇 勝彦
E-mail wakky@xxxxxxxxxxxxxxxxxxx 
       hgb01644@xxxxxxxxx(予備)
URL    http://www.computerartisan.com/

スレッド概略
[2132(R)](起点)
 └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]