2012-11-13 5 views
1

임의의 문자열 목록이 있습니다. 16 진수 색상 코드로 변환하고 싶습니다.임의의 문자열을 16 진수 색상 코드로 변환하는 방법

동일한 문자열을 변환 할 때마다 동일한 색상 코드를 반환해야한다는 점에서 코드가 무작위이어서는 안됩니다.

해결책 :

public string GetColorCode(string value) 
{ 
    var i = value.GetHashCode() & 0x00FFFFFF; 
    return i.ToString("X6"); 
} 
+1

혼란 스럽습니다 ... 변환하거나 매핑하고 싶습니까? – Chandu

+1

GetHashCode() >> 4? –

+0

솔루션은 실제로 질문에 대한 자신의 대답으로 추가되어야합니까? 이것은 응답자로부터 점수를 얻지 만 나중에 방문자 (나 같은)에게 더 나은 콘텐츠를 제공하고 SO 형식을 따르는 것이 더 낫다는 것을 알았습니다. – OneHoopyFrood

답변

3

당신은 출발점으로 GetHashCode()를 사용할 수 있습니다.

var color = str.GetHashCode() & 0x00FFFFFF; 

또는

var color = str.GetHashCode()>>8; 

이 보장 갖는 GetHasCode() 전체 정수를 반환하고 일반적으로 RGB에서 색상을 정의하기 위해 단지 3 바이트가 필요하기 때문에, 당신은 하나를 수행하여 noin 중요한 부분을 건너 뛸 수있다 같은 줄, 같은 색깔.

+0

어떻게하면이 색상 정수를 16 진수 색상 코드로 변환 할 수 있습니까? 나는 color.ToString ("X")을 시도했지만, 이것이 항상 6 자리의 16 진수 코드를 리턴하지는 않는다. – dhrm

+0

ToString ("X6")'은 필요한 경우 앞에 0을 추가합니다 (문제가있는 경우). – Rawling

+0

@DennisMadsen >> 8로 답을 수정했지만, Rawlign에서 제안한 ToString ("X6")은 내 제안을 따르는 방법입니다. –

관련 문제