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

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

[HSP]5桁Mバイト/秒文字列のサンプル

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

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


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

小技集のサンプル

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

//------------------------------------------------------------------------------
// 5桁バイト/秒のMB文字列を作成 by 科学太郎
//==============================================================================
// 新規作成日:2018-08-09 (木) 13:06:00
// 最終更新日:2018-08-09 (木) 13:20:00
//------------------------------------------------------------------------------

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

//--------------------------------------
// メイン部
//--------------------------------------
*Init
    ;バイト/秒
    sdim ByteUnits,9
    ByteUnits(0)=" Bps","KBps","MBps","GBps","TBps","PBps","EBps","ZBps","YBps"
*Main
    screen 0,640,480,SCREEN_NORMAL|SCREEN_FIXEDSIZE
    syscolor 15:boxf:color:title "5桁バイト/秒のMB文字列を作成 by 科学太郎"
    ;固定5桁
    s=""
    a=1.0
    repeat 90
        s+=MakeByteUnit5MB1(a)+"\n"
        a*=2.0
    loop
    ;可変5桁
    t=""
    a=1.0
    repeat 90
        t+=MakeByteUnit5MB2(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桁のMバイト/秒》"
    color $FF,$FF,$00:pos x,3:mes "《可変5桁のMバイト/秒》"
    ;結果
    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桁バイト/秒のMB文字列を作成
//--------------------------------------
#defcfunc MakeByteUnit5MB1 double _size_,\
    local nPos,\
    local dbSize
    
    dbSize=(_size_)             ; B
    dbSize/=1024.0:nPos++       ;KB
    dbSize/=1024.0:nPos++       ;MB
    ;単位シフト
    while(dbSize>=1024.0)
        dbSize/=1024.0:nPos++
    wend
    if(dbSize>=1000.0){
        dbSize/=1024.0:nPos++
    }
    return strf("%5.1f",dbSize)+MSG_SPACE+ByteUnits(nPos)
//--------------------------------------
// 5桁バイト/秒のMB文字列を作成
//--------------------------------------
#defcfunc MakeByteUnit5MB2 double _size_,\
    local nPos,\
    local dbSize,\
    local szSize
    
    dbSize=(_size_)             ; B
    dbSize/=1024.0:nPos++       ;KB
    dbSize/=1024.0:nPos++       ;MB
    ;単位シフト
    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+ByteUnits(nPos)
//------------------------------------------------------------------------------
// End of sample237(5桁バイト/秒のMB文字列を作成).hsp
//------------------------------------------------------------------------------

スクリーン・ショット

実行結果

固定5桁 可変5桁
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.0 MBps
  0.1 MBps
  0.1 MBps
  0.3 MBps
  0.5 MBps
  1.0 MBps
  2.0 MBps
  4.0 MBps
  8.0 MBps
 16.0 MBps
 32.0 MBps
 64.0 MBps
128.0 MBps
256.0 MBps
512.0 MBps
  1.0 GBps
  2.0 GBps
  4.0 GBps
  8.0 GBps
 16.0 GBps
 32.0 GBps
 64.0 GBps
128.0 GBps
256.0 GBps
512.0 GBps
  1.0 TBps
  2.0 TBps
  4.0 TBps
  8.0 TBps
 16.0 TBps
 32.0 TBps
 64.0 TBps
128.0 TBps
256.0 TBps
512.0 TBps
  1.0 PBps
  2.0 PBps
  4.0 PBps
  8.0 PBps
 16.0 PBps
 32.0 PBps
 64.0 PBps
128.0 PBps
256.0 PBps
512.0 PBps
  1.0 EBps
  2.0 EBps
  4.0 EBps
  8.0 EBps
 16.0 EBps
 32.0 EBps
 64.0 EBps
128.0 EBps
256.0 EBps
512.0 EBps
  1.0 ZBps
  2.0 ZBps
  4.0 ZBps
  8.0 ZBps
 16.0 ZBps
 32.0 ZBps
 64.0 ZBps
128.0 ZBps
256.0 ZBps
512.0 ZBps
  1.0 YBps
  2.0 YBps
  4.0 YBps
  8.0 YBps
 16.0 YBps
 32.0 YBps
 64.0 YBps
128.0 YBps
256.0 YBps
512.0 YBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.000 MBps
0.001 MBps
0.003 MBps
0.007 MBps
0.015 MBps
0.031 MBps
0.062 MBps
0.125 MBps
0.250 MBps
0.500 MBps
1.000 MBps
2.000 MBps
4.000 MBps
8.000 MBps
16.00 MBps
32.00 MBps
64.00 MBps
128.0 MBps
256.0 MBps
512.0 MBps
1.000 GBps
2.000 GBps
4.000 GBps
8.000 GBps
16.00 GBps
32.00 GBps
64.00 GBps
128.0 GBps
256.0 GBps
512.0 GBps
1.000 TBps
2.000 TBps
4.000 TBps
8.000 TBps
16.00 TBps
32.00 TBps
64.00 TBps
128.0 TBps
256.0 TBps
512.0 TBps
1.000 PBps
2.000 PBps
4.000 PBps
8.000 PBps
16.00 PBps
32.00 PBps
64.00 PBps
128.0 PBps
256.0 PBps
512.0 PBps
1.000 EBps
2.000 EBps
4.000 EBps
8.000 EBps
16.00 EBps
32.00 EBps
64.00 EBps
128.0 EBps
256.0 EBps
512.0 EBps
1.000 ZBps
2.000 ZBps
4.000 ZBps
8.000 ZBps
16.00 ZBps
32.00 ZBps
64.00 ZBps
128.0 ZBps
256.0 ZBps
512.0 ZBps
1.000 YBps
2.000 YBps
4.000 YBps
8.000 YBps
16.00 YBps
32.00 YBps
64.00 YBps
128.0 YBps
256.0 YBps
512.0 YBps
  • 固定5桁のMバイト/秒文字列は、小数点位置が固定してるため有効桁数が変化します。
  • 可変5桁のMバイト/秒文字列は、小数点位置が可変するため有効桁数は常に4桁を表示します。
  • ネット・モニターのソフトなどでは、可変5桁のMバイト/秒文字列を使います。

関連記事



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

コメントを投稿

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