2012-04-23 27 views
15

Chciałbym przekonwertować to: "#FFFFFF" na to: 0xFFFFFF. Jak to możliwe bez korzystania z eval?Jak uzyskać liczbę całkowitą szesnastkową z ciągu w JS?

Dzięki z góry,

+0

Jestem pewien * * To jest duplikatem ... Życzę "Related pytania" były mądrzejsze na temat znaczników językowych: -/ –

+1

@ Danny: Przez "wartość heksadecymalną", masz na myśli ** liczbowy ** wartość FFFFFF (np. 16777215 dziesiętny?). Jeśli tak, po prostu powiedz "wartość liczbowa", umieszczenie słowa "hex" spowoduje przeniesienie nas na obszar sznurka. Myślę, że prawdopodobnie miałeś na myśli numer. –

+1

@ T.J. Crowder Edytowałem tytuł: –

Odpowiedz

33

Strip off "#" i używają parseInt().

var hex = parseInt(str.replace(/^#/, ''), 16); 

Następnie, jeśli chcesz zobaczyć go w hex, można użyć .toString():

alert(hex.toString(16)); 
+1

Wolałbym 'substring()' (jak w odpowiedzi @ TJCrowder) zamiast 'replace()', ze względu na wydajność. –

+1

@MarkReed: To całkowicie zależy od tego, czego naprawdę potrzebuje OP *, co nie wynika z pytania. Być może (biorąc pod uwagę brak cytatów na temat "0xFFFFFF"), OP chce mieć wartość liczbową (co oczywiście spowodowałoby, że tytuł pytania byłby całkowicie błędny - nie za pierwszym razem!). –

+0

Dziękuję, działa –