颜色值进制转换
 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码,就会用到这两种颜色值的转换。基础的方法是十进制转十六进制,反过来十六进制转十进制二种方法。颜色值是分3段来转换的,若是aRGB格式分4段。
 每段只需要 0-255 <转换> 00 - ff。
 颜色值表达格式:
 hex = 0xff7dff       RGB=(255,125,255)
 hex = # ff7dff        RGB=(255,125,255)
 aHex = 0xff7d7dff    aRGB=(255,125,125,255)
今写了二个进制转换函数:
 十进制转十六进制 dec2hex ()
 十六进制转十进制 hex2dec ()
以及二个颜色值转换函数:
 十六进制颜色值转RGB(r, g, b) :hex2RGB ()
 RGB颜色值转为十六进制颜色值:RGB2hex ()

 
 
hex2RGB (){  //十六进制颜色值转RGB(r, g, b)
  //输入十六进制颜色值转换为十进制RGB格式颜色值
  //例: color$="0xffe992" ;  格式输入颜色值字串
        print "颜色值字串 = ",color$ ;
     get$=subString (color$, 2, 2);
        hex2dec () ;
        R=dec ;
     get$=subString (color$, 4, 2);
        hex2dec () ;
        G=dec ;
     get$=subString (color$, 6, 2);
        hex2dec () ;
        B=dec ;
     print "RGB = ", "( ",R," , ",G," , ",B," )" ;    //输出
        print "  " ;
 }//hex2RGB ()
test (){    //测试十六进制颜色值转换
 //十六进制颜色值转为RGB
     clearOutput ();
     color$="0xffe992" ;    //格式输入颜色值字串
         hex2RGB () ;
     color$="0x007d7d" ;    //格式输入颜色值字串
         hex2RGB () ;
    color$="0x00abff" ;    //格式输入颜色值字串
         hex2RGB () ;
  //反转 > 
        print "反转   > " ;
        RGB2hex ();
     color$="0x807aff" ;    //格式输入颜色值字串
         hex2RGB () ;
  //反转 > 
         print "反转   > " ;
         RGB2hex ();
 }//test ()
 RGB2hex (){
 //RGB颜色值转为十六进制颜色值
  string ss, ss1, ss2, ss3 ; 
     //传入 R=255 ;  G=128 ; B=128 ; 
    // dec To hex  and show hex
     dec=R ;  dec2hex() ;  ss1=hex ;
     dec=G ;  dec2hex() ;  ss2=hex ;
     dec=B ;  dec2hex() ;  ss3=hex ;  
          ss="0x"+ss1+ss2+ss3 ;
     print "RGB = ", "( ",R," , ",G," , ",B ," )" ;
     print "十六进制颜色值 = ", ss ;
     print "  ";
 }//RGB2hex ()
test16 (){    //测试RGB转换十六进制颜色值
     clearOutput ();
      R=255 ;  G=128 ; B=128 ;
      RGB2hex ();
     R=55 ;  G=98 ; B=255 ;
      RGB2hex ();
      R=155 ;  G=255 ; B=25 ;
      RGB2hex ();
      R=255 ;  G=233 ; B=146 ;
      RGB2hex ();
}//test16 ()

  
//二个函数:
 //十进制转十六进制 dec2hex ()
 //十六进制转十进制 hex2dec ()
dec2hex (){    
 //十进制非负整数int dec 转为十六进制值 hex $
  string hx$ ;
   hx$="0ABCDEF" ;
         hex="";     //init 输出串
 DecToHex :
   // do calculate until dec=0, return hex
       k=dec-dec/16*16 ;  //k=dec Mod 16, k=dec % 16
       dec=dec/16 ;            //整除,dec16
       hex=subString (hx$, k,1)+hex ;  
            if (dec>0) goto DecToHex ;
       //return string hex 
 }//dec2hex ()
hex2dec (){  
 //传入十六进制数转换为十进制数
 //传入 string  get$ 输出 int dec 
         nlen=len (get$);      //字串长度
         dec=0 ;                 //init 置初值 0
  //开始计算 >
       for (i=0; i<nlen; i++){
              a$=subString (get$, i, 1);
  //字符串转为数值的方法很多,我采用最简单直观的写法,字母大小写都可以。
         if (a$=="0") k=0 ;
         if (a$=="1") k=1 ;
         if (a$=="2") k=2 ;
         if (a$=="3") k=3 ;
         if (a$=="4") k=4 ;
         if (a$=="5") k=5 ;
         if (a$=="6") k=6 ;
         if (a$=="7") k=7 ;
         if (a$=="8") k=8 ;
         if (a$=="9") k=9 ;
         if (a$=="A"||a$=="a") k=10 ;
         if (a$=="B"||a$=="b") k=11 ;
         if (a$=="C"||a$=="c") k=12 ;
         if (a$=="D"||a$=="d") k=13 ;
         if (a$=="E"||a$=="e") k=14 ;
         if (a$=="F"||a$=="f") k=15 ;
          kn=nlen-i-1 ;     //高权位起降幂计算
          dec=dec+(int)(k*pow(16,kn)) ;   //乘方累加
               }       // return dec
  }//hex2dec ()
// End
到此这篇颜色代码是(颜色代码是几进制)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/26922.html