移動開發 十進位制轉顏色

2021-07-11 12:33:55 字數 2956 閱讀 6353

一般色值都是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 int 

getcolorfromstring(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,所以十進位制數...