我需要将项目的“年龄”(以天为单位)转换为十六进制值,其中最旧的项目=最大颜色= D9D8C9,最近的颜色=最小颜色= FFFFFF。
365岁以上的物品获得颜色D9D8C9。 7岁以下的物品颜色为FFFFFF。
根据这些最小和最大颜色,我如何找到365天以下和7天以下的任何项目的颜色?
最终,我会用PHP做,但伪代码示例很好。
答案 0 :(得分:2)
基本上,你正在寻找一种方法来任意将一个范围映射到另一个范围(7-365应映射到FFFFFF
- D9D8D9
)。
首先要做的事情是:将十进制转换为十六进制非常简单:
$age = mt_rand(1,600);
if ($age > 365) $hex = 'D9D8D9';
elseif ($age < 7) $hex = 'FFFFFF';
else $hex = str_pad(dechex($age), 6, '0', STR_PAD_LEFT);
我所做的只是检查$age
是否大于365,如果是,我指定D9D8D9
常数,如果小于7,我指定FFFFFF
。在所有其他情况下,我只是将数字转换为十六进制,并使用0
将结果字符串填充为6个字符,因此255
将变为FF
,并填充为{{1 }}
但要绘制范围上的范围,我们必须找出最小范围内 1 的步长如何缩放到较大范围。这是一个简单的“三个规则”:在两个尺度上计算等效值1并乘以。然后应用相同的范围,你就在那里
您使用的颜色范围为0000FF
到FFFFFF
,或者将其设置为小数:D9D8D9
到16777215
。这给我们留下了14276809
的范围,而不是365-7(或358)天。因此,每一天都在我们的颜色范围内“值得” 2500406
(6984.374301676
)。
把它们放在一起你有两个选择:计算距离FFFFFF或D9D8D9的距离,但就结果而言,选择哪一个并不重要。
(D9D8D9-FFFFFF)/(365-7)
两者都只是计算与给定值对应的颜色范围中的值。 <CrLowBound> - (<value>-<VLowBound>)*<CrStep>
//or
<CrHighBound> - (<VHighBound> - <value>)*<CrStep>
和CrLowBound
分别为FFF和D9D8D9,大致相同:CrHighBound
和VLowBound
为6和366. VHighBound
为CrStep
。我已经解释了我是如何获得这些价值的。
6984.374301676
这样可以更均匀地将颜色范围扩展到$age = mt_rand(1,600);
if ($age > 365) $hex = 'D9D8D9';
elseif ($age < 7) $hex = 'FFFFFF';
else $hex = str_pad(dechex(14276809-(round((366-$dec)*6984.374301676))), 6, '0', STR_PAD_LEFT);
//Or:
$hex = str_pad(dechex(16777215-(round(($dec-6)*6984.374301676))), 6, '0', STR_PAD_LEFT);
到D9D8D9
范围内:项目越旧,颜色越接近FFFFFF
,越近,距离D9D8D9
更近。
例如,如果年龄为FFFFFF
,则“颜色”将为117
:
1A6E1D
使用以下代码进行测试:
//age (max-age)*worth hex
117 == 1732125 == 1a6e1d
并将此作为输出:
FFFFFF - B3964B - B3B193 - B3CCDB - B3E824 - B4036C - B41EB4 - B439FD B45545 - B4708E - B48BD6 - B4A71E - B4C267 - B4DDAF - B4F8F7 - B51440 B52F88 - B54AD1 - B56619 - B58161 - B59CAA - B5B7F2 - B5D33A - B5EE83 B609CB - B62514 - B6405C - B65BA4 - B676ED - B69235 - B6AD7D - B6C8C6 B6E40E - B6FF57 - B71A9F - B735E7 - B75130 - B76C78 - B787C0 - B7A309 B7BE51 - B7D99A - B7F4E2 - B8102A - B82B73 - B846BB - B86203 - B87D4C B89894 - B8B3DD - B8CF25 - B8EA6D - B905B6 - B920FE - B93C46 - B9578F B972D7 - B98E20 - B9A968 - B9C4B0 - B9DFF9 - B9FB41 - BA1689 - BA31D2 BA4D1A - BA6863 - BA83AB - BA9EF3 - BABA3C - BAD584 - BAF0CC - BB0C15 BB275D - BB42A6 - BB5DEE - BB7936 - BB947F - BBAFC7 - BBCB0F - BBE658 BC01A0 - BC1CE9 - BC3831 - BC5379 - BC6EC2 - BC8A0A - BCA552 - BCC09B BCDBE3 - BCF72C - BD1274 - BD2DBC - BD4905 - BD644D - BD7F95 - BD9ADE BDB626 - BDD16F - BDECB7 - BE07FF - BE2348 - BE3E90 - BE59D8 - BE7521 BE9069 - BEABB2 - BEC6FA - BEE242 - BEFD8B - BF18D3 - BF341B - BF4F64 BF6AAC - BF85F5 - BFA13D - BFBC85 - BFD7CE - BFF316 - C00E5E - C029A7 C044EF - C06038 - C07B80 - C096C8 - C0B211 - C0CD59 - C0E8A1 - C103EA C11F32 - C13A7B - C155C3 - C1710B - C18C54 - C1A79C - C1C2E4 - C1DE2D C1F975 - C214BE - C23006 - C24B4E - C26697 - C281DF - C29D27 - C2B870 C2D3B8 - C2EF01 - C30A49 - C32591 - C340DA - C35C22 - C3776A - C392B3 C3ADFB - C3C944 - C3E48C - C3FFD4 - C41B1D - C43665 - C451AD - C46CF6 C4883E - C4A387 - C4BECF - C4DA17 - C4F560 - C510A8 - C52BF0 - C54739 C56281 - C57DCA - C59912 - C5B45A - C5CFA3 - C5EAEB - C60633 - C6217C C63CC4 - C6580D - C67355 - C68E9D - C6A9E6 - C6C52E - C6E076 - C6FBBF C71707 - C7324F - C74D98 - C768E0 - C78429 - C79F71 - C7BAB9 - C7D602 C7F14A - C80C92 - C827DB - C84323 - C85E6C - C879B4 - C894FC - C8B045 C8CB8D - C8E6D5 - C9021E - C91D66 - C938AF - C953F7 - C96F3F - C98A88 C9A5D0 - C9C118 - C9DC61 - C9F7A9 - CA12F2 - CA2E3A - CA4982 - CA64CB CA8013 - CA9B5B - CAB6A4 - CAD1EC - CAED35 - CB087D - CB23C5 - CB3F0E CB5A56 - CB759E - CB90E7 - CBAC2F - CBC778 - CBE2C0 - CBFE08 - CC1951 CC3499 - CC4FE1 - CC6B2A - CC8672 - CCA1BB - CCBD03 - CCD84B - CCF394 CD0EDC - CD2A24 - CD456D - CD60B5 - CD7BFE - CD9746 - CDB28E - CDCDD7 CDE91F - CE0467 - CE1FB0 - CE3AF8 - CE5641 - CE7189 - CE8CD1 - CEA81A CEC362 - CEDEAA - CEF9F3 - CF153B - CF3084 - CF4BCC - CF6714 - CF825D CF9DA5 - CFB8ED - CFD436 - CFEF7E - D00AC7 - D0260F - D04157 - D05CA0 D077E8 - D09330 - D0AE79 - D0C9C1 - D0E50A - D10052 - D11B9A - D136E3 D1522B - D16D73 - D188BC - D1A404 - D1BF4D - D1DA95 - D1F5DD - D21126 D22C6E - D247B6 - D262FF - D27E47 - D29990 - D2B4D8 - D2D020 - D2EB69 D306B1 - D321F9 - D33D42 - D3588A - D373D3 - D38F1B - D3AA63 - D3C5AC D3E0F4 - D3FC3C - D41785 - D432CD - D44E16 - D4695E - D484A6 - D49FEF D4BB37 - D4D67F - D4F1C8 - D50D10 - D52859 - D543A1 - D55EE9 - D57A32 D5957A - D5B0C2 - D5CC0B - D5E753 - D6029C - D61DE4 - D6392C - D65475 D66FBD - D68B05 - D6A64E - D6C196 - D6DCDF - D6F827 - D7136F - D72EB8 D74A00 - D76548 - D78091 - D79BD9 - D7B722 - D7D26A - D7EDB2 - D808FB D82443 - D83F8B - D85AD4 - D8761C - D89165 - D8ACAD - D8C7F5 - D8E33E D8FE86 - D919CE - D93517 - D9505F - D96BA8 - D986F0 - D9A238 - D9BD81 D9D8D9