プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

[HSP]5桁バイト単位文字列のサンプル

2018年08月13日 20時58分01秒 | HSP講座

スクリプト言語の HSP については、公式ホームページの「HSPTV!」をどうぞ。


このページは「単位文字列について」シリーズの1つです。
ここには、HSPで5桁のバイト単位文字列を作成するサンプルを紹介します。(戻る)

小技集のサンプル

管理上このサンプルは sample234(5桁バイト単位の文字列を作成).hsp のソースです。

//------------------------------------------------------------------------------
// 5桁バイト単位の文字列を作成 by 科学太郎
//==============================================================================
// 新規作成日:2018-08-09 (木) 12:12:00
// 最終更新日:2018-08-09 (木) 12:38:00
//------------------------------------------------------------------------------

//--------------------------------------
// 記号定数
//--------------------------------------
#define MSG_SPACE       " "

//--------------------------------------
// メイン部
//--------------------------------------
*Init
    ;バイト単位
    sdim SizeUnits,9
    SizeUnits(0)=" B","KB","MB","GB","TB","PB","EB","ZB","YB"
*Main
    screen 0,640,480,SCREEN_NORMAL|SCREEN_FIXEDSIZE
    syscolor 15:boxf:color:title "5桁バイト単位の文字列を作成 by 科学太郎"
    ;固定5桁
    s=""
    a=1.0
    repeat 90
        s+=MakeSizeUnit5A(a)+"\n"
        a*=2.0
    loop
    ;可変5桁
    t=""
    a=1.0
    repeat 90
        t+=MakeSizeUnit5B(a)+"\n"
        a*=2.0
    loop
    ;文字
    font MSGOTHIC,14
    x=ginfo_winX/2
    y=ginfo_winY-20
    color $00,$00,$00:boxf
    color $FF,$FF,$00:pos 0,3:mes "《固定5桁のバイト単位》"
    color $FF,$FF,$00:pos x,3:mes "《可変5桁のバイト単位》"
    ;結果
    font MSGOTHIC,12:objmode 2
    pos 0,20:mesbox s,x,y,5,0
    pos x,20:mesbox t,x,y,5,0
    stop
//--------------------------------------
// 5桁バイト単位の文字列を作成
//--------------------------------------
#defcfunc MakeSizeUnit5A double _size_,\
    local nPos,\
    local dbSize
    
    dbSize=(_size_)
    if(dbSize<1024.0){
        return strf("%5.f",dbSize)+MSG_SPACE+SizeUnits(nPos)
    }
    while(dbSize>=1024.0)
        dbSize/=1024.0:nPos++
    wend
    if(dbSize>=1000.0){
        dbSize/=1024.0:nPos++
    }
    return strf("%5.1f",dbSize)+MSG_SPACE+SizeUnits(nPos)
//--------------------------------------
// 5桁バイト単位の文字列を作成
//--------------------------------------
#defcfunc MakeSizeUnit5B double _size_,\
    local nPos,\
    local dbSize,\
    local szSize
    
    dbSize=(_size_)
    if(dbSize<1024.0){
        return strf("%5.f",dbSize)+MSG_SPACE+SizeUnits(nPos)
    }
    while(dbSize>=1024.0)
        dbSize/=1024.0:nPos++
    wend
    if(dbSize>=1000.0){
        dbSize/=1024.0:nPos++
    }
    ;補正
    szSize=strf("%f",dbSize)    :poke szSize,5
    if(peek(szSize,4)=='.')     :poke szSize,4
    return strf("%5s",szSize)+MSG_SPACE+SizeUnits(nPos)
//------------------------------------------------------------------------------
// End of sample234(5桁バイト単位の文字列を作成).hsp
//------------------------------------------------------------------------------

スクリーン・ショット

実行結果

固定5桁 可変5桁
    1  B
    2  B
    4  B
    8  B
   16  B
   32  B
   64  B
  128  B
  256  B
  512  B
  1.0 KB
  2.0 KB
  4.0 KB
  8.0 KB
 16.0 KB
 32.0 KB
 64.0 KB
128.0 KB
256.0 KB
512.0 KB
  1.0 MB
  2.0 MB
  4.0 MB
  8.0 MB
 16.0 MB
 32.0 MB
 64.0 MB
128.0 MB
256.0 MB
512.0 MB
  1.0 GB
  2.0 GB
  4.0 GB
  8.0 GB
 16.0 GB
 32.0 GB
 64.0 GB
128.0 GB
256.0 GB
512.0 GB
  1.0 TB
  2.0 TB
  4.0 TB
  8.0 TB
 16.0 TB
 32.0 TB
 64.0 TB
128.0 TB
256.0 TB
512.0 TB
  1.0 PB
  2.0 PB
  4.0 PB
  8.0 PB
 16.0 PB
 32.0 PB
 64.0 PB
128.0 PB
256.0 PB
512.0 PB
  1.0 EB
  2.0 EB
  4.0 EB
  8.0 EB
 16.0 EB
 32.0 EB
 64.0 EB
128.0 EB
256.0 EB
512.0 EB
  1.0 ZB
  2.0 ZB
  4.0 ZB
  8.0 ZB
 16.0 ZB
 32.0 ZB
 64.0 ZB
128.0 ZB
256.0 ZB
512.0 ZB
  1.0 YB
  2.0 YB
  4.0 YB
  8.0 YB
 16.0 YB
 32.0 YB
 64.0 YB
128.0 YB
256.0 YB
512.0 YB
    1  B
    2  B
    4  B
    8  B
   16  B
   32  B
   64  B
  128  B
  256  B
  512  B
1.000 KB
2.000 KB
4.000 KB
8.000 KB
16.00 KB
32.00 KB
64.00 KB
128.0 KB
256.0 KB
512.0 KB
1.000 MB
2.000 MB
4.000 MB
8.000 MB
16.00 MB
32.00 MB
64.00 MB
128.0 MB
256.0 MB
512.0 MB
1.000 GB
2.000 GB
4.000 GB
8.000 GB
16.00 GB
32.00 GB
64.00 GB
128.0 GB
256.0 GB
512.0 GB
1.000 TB
2.000 TB
4.000 TB
8.000 TB
16.00 TB
32.00 TB
64.00 TB
128.0 TB
256.0 TB
512.0 TB
1.000 PB
2.000 PB
4.000 PB
8.000 PB
16.00 PB
32.00 PB
64.00 PB
128.0 PB
256.0 PB
512.0 PB
1.000 EB
2.000 EB
4.000 EB
8.000 EB
16.00 EB
32.00 EB
64.00 EB
128.0 EB
256.0 EB
512.0 EB
1.000 ZB
2.000 ZB
4.000 ZB
8.000 ZB
16.00 ZB
32.00 ZB
64.00 ZB
128.0 ZB
256.0 ZB
512.0 ZB
1.000 YB
2.000 YB
4.000 YB
8.000 YB
16.00 YB
32.00 YB
64.00 YB
128.0 YB
256.0 YB
512.0 YB
  • 固定5桁のバイト単位文字列は、小数点位置が固定してるため有効桁数が変化します。
  • 可変5桁のバイト単位文字列は、小数点位置が可変するため有効桁数は常に4桁を表示します。
  • メモリ・モニターのソフトなどでは、可変5桁のバイト単位文字列を使います。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« [HSP]単位文字列について | トップ | [HSP]5桁バイト/秒文字列... »
最新の画像もっと見る

コメントを投稿

HSP講座」カテゴリの最新記事