一般色值都是16進製制數字,專案中有時候回碰到10進製數字轉顏色。ios**之前網上找的,android的是通過規律自己寫的。
轉換的原理:
1.將10進製轉成16進製制
2.將16進製制的字串兩兩拆分
3.通過rgb顯示顏色,正常的16進製制直接可以顯示,轉換的需要把r和b對應的值進行替換。
4.在前面加上號,轉成顏色
ios-(
uicolor
*)getcolorfromstring:(
nsstring
*)colorstring if
(colorint<0)
return
[uicolor
whitecolor];
nsstring
*nlettervalue;
nsstring
*colorstring16 =
@"";
intttmpig;
for(int
i = 0; i<9; i++)
colorstring16 = [nlettervalue
:colorstring16]; if
(colorint == 0)
break;
} colorstring16 = [[colorstring16
stringbytrimmingcharactersinset
:[nscharacterset
whitespaceandnewlinecharacterset
]] uppercasestring];
//去掉前後空格換行符
if([colorstring16
hasprefix
:@"0x"])
colorstring16 = [colorstring16
substringfromindex
:2]; if
([colorstring16
hasprefix
:@"#"])
colorstring16 = [colorstring16
substringfromindex
:1];
// string should be 6 or 8 characters if
([colorstring16
length
] < 6)
// nslog(@"%@",colorstring16); if
([colorstring16
length
] != 6)
return
[uicolor
whitecolor
];
// separate into r, g, b substrings
nsrange
range;
range.
location
= 0;
range.
length
= 2;
nsstring
*bstring = [colorstring16
substringwithrange
:range];
range.
location
= 2;
nsstring
*gstring = [colorstring16
substringwithrange
:range];
range.
location
= 4;
nsstring
*rstring = [colorstring16
substringwithrange
:range];
// scan values
unsigned
intr, g, b; [[
nsscanner
scannerwithstring
:rstring]
scanhexint
:&r]; //
掃瞄16
進製到int [[
nsscanner
scannerwithstring
:gstring]
scanhexint
:&g]; [[
nsscanner
scannerwithstring
:bstring]
scanhexint
:&b];
return
[uicolor
colorwithred
:((float
) r / 255.0f)
green
:((float
) g / 255.0f)
blue
:((float
) b / 255.0f)
alpha
:1.0f]; }
android
public intgetcolorfromstring(string colorstring)else if (colorstring16.length()==2)else if (colorstring16.length()==3)else if (colorstring16.length()==4)else if (colorstring16.length()==5)
string bstring = colorstring16.substring(0
,2);
string gstring = colorstring16.substring(2
,4);
string rstring = colorstring16.substring(4
,6);
return color.parsecolor("#"+rstring+gstring+bstring);
}
m進製轉十進位制
題目描述 description 將m進製數n轉化成乙個十進位制數 m 16 題目保證轉換後的十進位制數 100 輸入描述 input description 共一行n和m 輸出描述 output description 共乙個數 表示m進製的n化成十進位制的數 樣例輸入 sample input ...
十六進製制轉十進位制
create function fn hextobinary hex varchar 8 returns varchar 255 asbegin declare base tinyint declare string varchar 255 declare return varchar 255 de...
十進位制轉十六進製制
問 題 描 述 十 六 進 制 數 是 在 程 序 設 計 時 經 常 要 使 用 到 的 一 種 整 數 的 表 示 方 式 它 有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 共 16 個符號,分別表示十進位制數的 0 15。十六進製制的計數方法是滿16 進 1,所以十進位制數...