在ASP Classic中将Hex转换为RGB

时间:2017-08-09 08:17:07

标签: vbscript asp-classic hex rgb

请告诉我如何在ASP Classic / VBScript中将十六进制转换为RGB。我试图在互联网上搜索并尝试了许多建议的解决方案,但没有一点指向我想要实现的目标。

我尝试了以下功能,但没有一项功能正常:Convert hex color string to RGB color

转换为RBB后,我希望根据背景颜色设置文本颜色。所以基本上我的背景颜色代码是十六进制。

2 个答案:

答案 0 :(得分:0)

首先,使用"& h"将十六进制代码转换为十进制表示和解析结果。在那之后,做一个基本的按位运算符来从数字中提取RGB值。

Dim hexval : hexval = "fdfeff"

Dim rgbval : rgbval = CLng("&h" & hexval)
Dim r : r = (rgbval And &hff0000&) / 65536
Dim g : g = (rgbval And &h00ff00&) / 256
Dim b : b = (rgbval And &h0000ff&)

wscript.echo Join(Array(hexval, rgbval, r, g, b), vbcrlf)

这会产生以下输出:

fefeff
16645887
253
254
255

答案 1 :(得分:-1)

这有点长,我相信base 16的功能可能会更有效,但是可以使用。

' Convert Hex to RGB 
Function ConvertHexToRBG(theHexColor)
  Color = Replace(theHexColor, "#", "") 
  Red = (Mid(Color, 1, 2)) 
  Green = (Mid(Color, 3, 2))
  Blue = (Mid(Color, 5, 2))

  ConvertHexToRBG =  "RGB("&ConvertHexToInt(red)&","&ConvertHexToInt(green)&","&ConvertHexToInt(blue)&",1)"
End Function

Function ConvertHexToInt(theStr)
  If theStr <> "" Then 
  SELECT Case Left(theStr,1)
    Case "F"
        T = 15
    Case "E"
        T = 14
    Case "D"
        T = 13
    Case "C"
        T = 12
    Case "B"
        T = 11
    Case "A"
        T = 10
    Case "9"
        T = 9
    Case "8"
        T = 8
    Case "7"
        T = 7
    Case "6"
        T = 6
    Case "5"
        T = 5
    Case "4"
        T = 4
    Case "3"
        T = 3
    Case "2"
        T = 2
    Case "1" 
        T = 1
    CASE "0"
        T = 0
    Case Else
        T = Left(theStr,1)
  End SELECT
  SELECT Case Right(theStr,1)
    Case "F"
        D = 15
    Case "E"
        D = 14
    Case "D"
        D = 13
    Case "C"
        D = 12
    Case "B"
        D = 11
    Case "A"
        D = 10
    Case "9"
        D = 9
    Case "8"
        D = 8
    Case "7"
        D = 7
    Case "6"
        D = 6
    Case "5"
        D = 5
    Case "4"
        D = 4
    Case "3"
        D = 3
    Case "2"
        D = 2
    Case "1" 
        D = 1
    CASE "0"
        D = 0
    Case Else
        D = Right(theStr,1)
  End SELECT
  ConvertHexToInt = CInt(T*16)+CInt(D)
Else
  ConvertHexToInt =  theStr
End If