星期二, 10月 31, 2023

2001-09-03 如何將 10 進位數字轉換成 16 進位文字輸出?(C function sprintf)


如何將 10 進位數字轉換成 16 進位文字輸出?(C function sprintf)	


1. 例如 RGB 顏色碼 10 進位數字為 : (128:255:192) 轉換為 16 進位文字輸出 (80:FF:C0)

2. 呼叫 C 函數 "sprintf" 是最快的方式,呼叫方式如下:

    int sprintf( char *buffer, const char *format [, argument] ...);


範例程式 SPRINTFR


File   : QRPGLESRC
Member : SPRINTFR
Type   : RPGLE
Usage  : CRTBNDRPG SPRINTFR
         Call SPRINTFR

     H DftActGrp(*No) BndDir('QC2LE')
                                                                   
     D  nRed           S              5I 0 INZ(128)
     D  nGreen         S              5I 0 INZ(255)
     D  nBlue          S              5I 0 INZ(192)
                                                                   
     D sprintf3        PR            10I 0 ExtProc('sprintf')
     D  szRecvVar                      *   VALUE
     D  szFormat                       *   VALUE Options(*STRING)
     D  Red                          10I 0 Value Options(*NoPass)
     D  Green                        10I 0 Value Options(*NoPass)
     D  Blue                         10I 0 Value Options(*NoPass)
                                                                   
     D szBuffer        S             20A
     D szColor         S            256A
     D pColor          S               *
                                                                   
     C                   Eval      pColor  = %addr(szColor)
     C                   CallP     sprintf3(pColor : '%X:%X:%X' :
     C                               nRed:nGreen:nBlue )
     C                   Eval      szBuffer = %str(pColor)
     C     szBuffer      Dsply
                                                                   
     C                   MOVE      *ON           *INLR
            


沒有留言: