【问题标题】:Convert Hex to RGB in ASP Classic在 ASP Classic 中将十六进制转换为 RGB
【发布时间】:2018-01-17 00:31:11
【问题描述】:

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

我尝试了以下功能,但它们都不起作用:Convert hex color string to RGB color

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

【问题讨论】:

  • color = CLng("&h" & "00ff00")?
  • "Can't get it to work" 是一个不充分的问题描述。显示您尝试过的确切(即您的代码)并描述期望的和实际的结果。
  • 您链接的解决方案将不起作用,因为 VBScript 与 VB.NET 不同。

标签: vbscript asp-classic hex rgb


【解决方案1】:

首先,您使用“&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

【讨论】:

    【解决方案2】:

    这有点长,我相信 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 
    

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2015-01-31
      • 1970-01-01
      • 2021-03-22
      • 2015-06-21
      相关资源
      最近更新 更多