Vbscript 在ASP Classic中将十六进制转换为RGB

Vbscript 在ASP Classic中将十六进制转换为RGB,vbscript,asp-classic,hex,rgb,Vbscript,Asp Classic,Hex,Rgb,您能告诉我如何在ASP Classic/VBScript中将十六进制转换为RGB吗。我尝试在互联网上搜索,尝试了许多建议的解决方案,但没有一个指向我想要实现的目标 我尝试了以下功能,但都不起作用: 转换为RBB后,我希望根据背景色设置文本颜色。因此,基本上我的背景色代码是十六进制的。首先,使用“&h”表示法将十六进制代码转换为十进制,并解析结果。在此之后,只需执行基本的位运算符,即可从数字中提取RGB值 Dim hexval : hexval = "fdfeff" Dim rgbval : r

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

我尝试了以下功能,但都不起作用:


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

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

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

这有点长,我相信base16函数可能会更有效,但它可以工作

' 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 
将十六进制转换为RGB 函数转换器hextorbg(hexcolor) 颜色=替换(HexColor“#”和“”) 红色=(中间(颜色,1,2)) 绿色=(中间(颜色,3,2)) 蓝色=(中间色,5,2)) ConvertHexToRBG=“RGB(&ConvertHexToInt(红色)&“&ConvertHexToInt(绿色)&“,&ConvertHexToInt(蓝色)&”,1)” 端函数 函数转换器HEXTOINT(theStr) 如果是“tr”,那么 选择左侧案例(STR,1) 案例“F” T=15 案例“E” T=14 案例“D” T=13 案例“C” T=12 案例“B” T=11 案例“A” T=10 案例“9” T=9 案例“8” T=8 案例“7” T=7 案例“6” T=6 案例“5” T=5 案例“4” T=4 案例“3” T=3 案例“2” T=2 案例“1” T=1 案例“0” T=0 其他情况 T=左侧(TSTR,1) 结束选择 选择右侧案例(STR,1) 案例“F” D=15 案例“E” D=14 案例“D” D=13 案例“C” D=12 案例“B” D=11 案例“A” D=10 案例“9” D=9 案例“8” D=8 案例“7” D=7 案例“6” D=6 案例“5” D=5 案例“4” D=4 案例“3” D=3 案例“2” D=2 案例“1” D=1 案例“0” D=0 其他情况 D=右侧(STR,1) 结束选择 ConvertHexToInt=CInt(T*16)+CInt(D) 其他的 ConvertHexToInt=theStr 如果结束
这有点长,我相信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 
将十六进制转换为RGB 函数转换器hextorbg(hexcolor) 颜色=替换(HexColor“#”和“”) 红色=(中间(颜色,1,2)) 绿色=(中间(颜色,3,2)) 蓝色=(中间色,5,2)) ConvertHexToRBG=“RGB(&ConvertHexToInt(红色)&“&ConvertHexToInt(绿色)&“,&ConvertHexToInt(蓝色)&”,1)” 端函数 函数转换器HEXTOINT(theStr) 如果是“tr”,那么 选择左侧案例(STR,1) 案例“F” T=15 案例“E” T=14 案例“D” T=13 案例“C” T=12 案例“B” T=11 案例“A” T=10 案例“9” T=9 案例“8” T=8 案例“7” T=7 案例“6” T=6 案例“5” T=5 案例“4” T=4 案例“3” T=3 案例“2” T=2 案例“1” T=1 案例“0” T=0 其他情况 T=左侧(TSTR,1) 结束选择 选择右侧案例(STR,1) 案例“F” D=15 案例“E” D=14 案例“D” D=13 案例“C” D=12 案例“B” D=11 案例“A” D=10 案例“9” D=9 案例“8” D=8 案例“7” D=7 案例“6” D=6 案例“5” D=5 案例“4” D=4 案例“3” D=3 案例“2” D=2 案例“1” D=1 案例“0” D=0 其他情况 D=右侧(STR,1) 结束选择 ConvertHexToInt=CInt(T*16)+CInt(D) 其他的 ConvertHexToInt=theStr 如果结束
color=CLng(“&h”和“00ff00”)
?“无法使其工作”是一个不充分的问题描述。显示您已尝试的内容(即您的代码),并描述所需的实际结果。由于VBScript与VB.NET不同,您链接的解决方案无法工作。
color=CLng(“&h”和“00ff00”)
?“无法使其工作”是一个不充分的问题描述。显示您已尝试的内容(即您的代码),并描述所需的和实际的结果。您链接的解决方案无法工作,因为VBScript与VB.NET不同。