十进制转16进制

十进制转16进制
碰到一个问题,rgb颜色值用16进制表示。此问题看起来很简单,用通用函数就能解决。但是通用函数有语言和各种系统的局限。于是自己的应用就自己写个代码。
我的需求是0-255的颜色值转16进制,转为16进制就2个字节。只要将rgb三个颜色值分别转为16进制字串拼接成一个字串就能用于应用程序了。
于是我就写了个简单简练的函数dec2hex ()。
怎么使用:我合并在rgb2cmy ()内

3b68489859d348f58d20030ac62a5cb4.png
 

源码如下:
设全局变量
  string ss, ss1, ss2, ss3 ;   //输出字串
  int H, S, V ;   //计算 HSB
   int R, G, B ;   //计算 HSB
   int max, min ;   
   int cc1, mm1, yy1, kk ;  //CMYK
   int D ;               //dec2hex , input D=dec
   string hex ;     //dec2hex 输出16进制字串
  string colorhex ;   //输出应用 RGB  hex$

065c6be957a5495a9458926088bd6835.png 

 

dec2hex (){
  // 0-255 十进制数转16进制
  // input D=dec  return hex 
  //此方法仅用于 RGB 转16进制表示
 int h1,h2;   //calculate hex 2个字节 255=FF
 string hx1,hx2 ;    //转字串
 string  hx$="0123456789ABCDEF" ;
//注:int类 D/16 只取整数,不计小数
   h2=D-D/16*16 ;       //计算 (D mod 16) 取余 D % 16
   h1=D/16 ;                 //取整
   hx2=subString (hx$, h2,1) ;  
   hx1=subString (hx$, h1,1) ;  
       hex=hx1+hx2 ; //合并字串, return hex
}//dec2hex ()

5d84e4f096524bd29bb240b726a90120.png
rgb2cmy (){
          R=r1 ; G=g1 ;  B=b1 ;   //H调色板选色
// clearOutput () ;    //调试
// print "RGB=  ", R, " , ", G, " , ", B ;
          cc1= (int)((255-R)/2.55) ;
          mm1=(int)((255-G)/2.55) ;
          yy1=(int)((255-B)/2.55) ;  
 
//  calculate  k= min (cc1, min (mm1, yy1))
     if (cc1<=mm1&&cc1<=yy1)  min=cc1 ;  
     if (mm1<=cc1&&mm1<=yy1)  min=mm1 ;  
     if (yy1<=cc1&&yy1<=mm1)  min=yy1 ;  
           kk=min ;
     if (kk != 0) kk = (int)(kk * kk/100) ;
  print "CMYK =  ", cc1," , " , mm1, " ,  ", yy1, " , ", kk ;

           cs.SetFillMode (1) ;
          cs.SetTextSize (18) ;
          cs.SetColor (255,0,180,250);  //bar 底擦除
      cs.DrawRect (220,491,450,517);   
          cs.SetColor (255,225,225,225 ) ;
       ss=intToString (cc1)+" , " ;
       ss=ss+intToString (mm1)+" , " ;
       ss=ss+intToString (yy1)+" , " ;
       ss=ss+intToString (kk) ;
           ss="CMYK = "+ss ;
       cs.DrawText (ss, 220, 510 ) ;  //界面statebar显示CMYK

  //**** dec To hex  and show hex  转换,

  // 应用dec2hex ()
    D=R ;  dec2hex() ; 
    ss1=hex ;
    D=G ;  dec2hex() ;
    ss2=hex ;
    D=B ;  dec2hex() ; 
    ss3=hex ;  
         ss="0x"+ss1+ss2+ss3 ;
         colorhex=ss ;     //用于输出应用
          cs.SetColor (255,100,100,100);  //擦除
     cs.DrawRect (470,365,570,385);  
          cs.SetColor (255,225,225,225 ) ;
      cs.DrawText (ss, 480, 380 ) ;    //置选色块下

 cs.Update ();
}//rgb2cmy ()

//****End****

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值