颜色值进制转换

颜色值进制转换
专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值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 ()

004516e045324e72ab1cb572017b1cd9.png

6663429c6efc4e0dbcb1519cf56dbeac.png 

4ac7aae51d1f4b229e77ef5e23936cb6.png 

 

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 ()

72c71713a4f540e5825f374d15ca8621.png

c5f30f62ead54f5f9cb4f68eb06a5861.png  

//二个函数:
//十进制转十六进制 dec2hex ()
//十六进制转十进制 hex2dec ()

dec2hex (){    
//十进制非负整数int dec 转为十六进制值 hex $
 string hx$ ;
  hx$="0123456789ABCDEF" ;
        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 ;            //整除,dec\16
      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 ****

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/332065.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-组管理和权限管理

1 Liunx组的基本介绍&#xff1a; 在Linux中的每个用户必须属于一个组&#xff0c;不能独立于组外。在Linux中每个文件都有所有者、所在组、其他组的概念 所有者所在组其它组改变用户所在的组 2 文件/目录的所有者 一般文件的创建者&#xff0c;谁创建了该文件&#xff0c;就…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集&#xff08;Garbage Collection&#xff0c; 下文简称GC&#xff09;&#xff0c;其优缺点如下&#xff1a; 优点&#…

Shell

Linux中shell是Linux内核的一个外层保护工具&#xff0c;负责用户与内核互交。是一直命令行解析器&#xff0c;是指一直应用程序&#xff0c;且提供一个界面 还是一种编程语言. 查看当前系统的Shell 查看有哪些shell&#xff0c;用cat /etc/shells 查看当前系统默认的shell&…

二十八篇:嵌入式系统实战指南:案例研究与未来挑战

嵌入式系统实战指南&#xff1a;案例研究与未来挑战 1. 引言 1.1 嵌入式系统的重要性及其应用广度 在当今快速发展的技术领域中&#xff0c;嵌入式系统扮演着至关重要的角色。这些系统是专门设计的计算机硬件和软件的组合&#xff0c;旨在执行特定任务&#xff0c;如控制、监…

牛马真的沉默了,入职第一天就干活

入职第一天就干活的&#xff0c;就问还有谁&#xff0c;搬来一台N手电脑&#xff0c;第一分钟开机&#xff0c;第二分钟派活&#xff0c;第三分钟干活&#xff0c;巴适。。。。。。 打开代码发现问题不断 读取配置文件居然读取两个配置文件&#xff0c;一个读一点&#xff0c;…

Leetcode算法题笔记(3)

目录 矩阵101. 生命游戏解法一解法二 栈102. 移掉 K 位数字解法一 103. 去除重复字母解法一 矩阵 101. 生命游戏 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子…

计算机网络——TCP 协议的三次握手 / 四次挥手

简述 TCP / UDP 协议都是传输层的协议。 UDP 是面向无连接的协议&#xff0c;就是说发送端不在乎消息数据是否传输到接收端了&#xff0c;所以会出现数据丢失的情况&#xff0c;所以可靠性也不高。 TCP 是面向连接的、可靠的、基于字节流的传输层协议。所谓面向连接的&#…

机器学习算法手撕(一):KD树

import math import matplotlib.pyplot as pltclass Node:def __init__(self, data, leftNone, rightNone):self.data dataself.left leftself.right right# 创建KDTree类 class KDTree:def __init__(self, k):self.k kdef create_tree(self,dataset,depth):if not dataset…

SpringBoot使用rsa-encrypt-body-spring-boot实现接口加解密

废话不多说&#xff0c;直接上代码 引入依赖 <dependency><groupId>cn.shuibo</groupId><artifactId>rsa-encrypt-body-spring-boot</artifactId><version>1.0.1.RELEASE</version> </dependency>配置文件 rsa:encrypt:# 是…

电表远传抄表是什么?

1.电表远传抄表&#xff1a;简述 电表远传抄表&#xff0c;又称为远程控制自动抄表系统&#xff0c;是电力行业的智能化技术运用&#xff0c;它通过无线或通信网络技术&#xff0c;完成对电表数据信息的远程收集解决。此项技术不仅提升了抄水表高效率&#xff0c;降低了人工偏…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89341358 功能介绍&#xff1a; 前台登录&#xff1a;前台登录&#xff1a; ①首页&#xff1a;菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…

【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数

本节博客是对阅读剑指offer后的笔记归纳总结&#xff0c;有需要借鉴即可。 目录 1.p21-p25内容概要2.询问语法概念常考&#xff1a;CPP关键字理解举例&#xff1a;sizeof空类 3.分析代码举例&#xff1a;类中拷贝构造的无限递归问题 4.写代码常考点&#xff1a;类内成员函数、迭…

keycloakAsana SSO对接配置

说明&#xff1a;Keycloak与Asana单点登录对接&#xff0c;Keycloak做IDP&#xff0c;Asana做SP&#xff1b; 一、环境信息 操作系统&#xff1a;ubuntu keycloak&#xff1a;21.1.2 Asana enterprise&#xff1b;更新apt软件包索引&#xff1a; sudo apt update检查是否已安…

数组-最接近给出数字的三数之和

题目描述 解题思路 这里使用三层for循环&#xff0c;暴力解法穷举所有三个数和的可能性&#xff0c;注意三层循环里的索引不要重复。 代码实现 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的&#xff0c;而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制&#xff08;尤其是2的幂相关的进制&#xff0c;因为这种计数系统比十进制更接近于计算机的二进制系统&#xff09;&#xff0…

【Linux初探】:解锁开源世界的神秘钥匙

文章目录 &#x1f680;一、了解Linux&#x1f525;二、Linux 的发行版❤️三、Linux应用领域&#x1f4a5;四、Linux vs Windows & mac &#x1f680;一、了解Linux Linux是一种自由、开放源代码的操作系统&#xff0c;它的内核由芬兰计算机科学家Linus Torvalds在1991年创…

手把手从0到1教你做STM32+FreeRTOS智能家居--第10篇之ASR-PRO语音识别模块

前言 先看实验效果&#xff0c;通过ASR-PRO语音智能识别控制模块&#xff0c;来控制STM32单片机实现对应的控制功能。因为后台好多小伙伴私信问用的是什么语音模块&#xff0c;并且很少在网上看到如何使用此模块相关的文章&#xff0c;所以我将会在本篇文章详细介绍一下此模块…

HTML蓝色爱心

目录 写在前面 HTML入门 完整代码 代码分析 运行结果 系列推荐 写在后面 写在前面 最近好冷吖&#xff0c;小编给大家准备了一个超级炫酷的爱心&#xff0c;一起来看看吧&#xff01; HTML入门 HTML全称为HyperText Markup Language&#xff0c;是一种标记语言&#…