首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UNIX shell脚本中将十六进制颜色转换为十进制RGB值

在UNIX shell脚本中将十六进制颜色转换为十进制RGB值
EN

Stack Overflow用户
提问于 2011-08-31 14:16:05
回答 4查看 6.2K关注 0票数 8

我相信已经有人解决了这个问题:将十六进制颜色值(从000000到FFFFFF的任何值)转换为从0到255的3个十进制值的简单且可移植的方法是什么?(如果您不熟悉HTML中传统的颜色表示方式,那么前两个十六进制数字是第一个十进制数,依此类推。)

EN

回答 4

Stack Overflow用户

发布于 2011-08-31 15:49:31

代码语言:javascript
运行
复制
$ cat hexrgb.sh
#!/bin/bash
hex="11001A"
printf "%d %d %d\n" 0x${hex:0:2} 0x${hex:2:2} 0x${hex:4:2}

$ ./hexrgb.sh
17 0 26

如果您不愿意使用bash进行子字符串扩展,我仍然会使用printf进行转换。

票数 17
EN

Stack Overflow用户

发布于 2011-08-31 15:21:46

您可以使用如下脚本:

代码语言:javascript
运行
复制
#!/bin/sh
# hextorgb.sh
hexinput=`echo $1 | tr '[:lower:]' '[:upper:]'`  # uppercase-ing
a=`echo $hexinput | cut -c-2`
b=`echo $hexinput | cut -c3-4`
c=`echo $hexinput | cut -c5-6`

r=`echo "ibase=16; $a" | bc`
g=`echo "ibase=16; $b" | bc`
b=`echo "ibase=16; $c" | bc`

echo $r $g $b
exit 0

并像这样使用它:

代码语言:javascript
运行
复制
./hextorgb.sh "11001A"

结果输出如下所示:

代码语言:javascript
运行
复制
17 0 26

可以通过测试参数等来改进它,但它可以做您想要的事情。

票数 7
EN

Stack Overflow用户

发布于 2019-04-27 03:32:38

代码语言:javascript
运行
复制
#!/usr/bin/env bash

hex2rgb() {
    hex=$(echo "${1^^}" | sed 's/#//g')

    a=$(echo $hex | cut -c-2)
    b=$(echo $hex | cut -c3-4)
    c=$(echo $hex | cut -c5-6)

    r=$(echo "ibase=16; $a" | bc)
    g=$(echo "ibase=16; $b" | bc)
    b=$(echo "ibase=16; $c" | bc)

    echo ${1^^}
    echo $r $g $b
}

hex2rgb "#FF0000"
hex2rgb "#00FF00"
hex2rgb "#0000FF"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7253235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档