我想要一個方法,如果給定一個十六進制數(例如0x01
)返回true
。我嘗試了一個字符串參數,但我需要數字類型檢查!例如:如何獲得真或假,如果一個數字是十六進制或不是?
isHex(0x0d) //-> true
isHex(12) //-> false
我想要一個方法,如果給定一個十六進制數(例如0x01
)返回true
。我嘗試了一個字符串參數,但我需要數字類型檢查!例如:如何獲得真或假,如果一個數字是十六進制或不是?
isHex(0x0d) //-> true
isHex(12) //-> false
這是不可能的,因爲十六進制數文字是代表相同數量的另一種方式,而且也沒有辦法來區分它們:
0x10 //=> 16
typeof 0x10 //=> 'number'
typeof 16 //=> 'number'
,如果你這樣做只會是可能的通過字符串作爲字符串:
function isHex(num) {
return Boolean(num.match(/^0x[0-9a-f]+$/i))
}
isHex('0x1a') //=> true
isHex('16') //=> false
謝謝:)這是不可能的..我需要找到另一種方式..! –
JavaScript不能告訴你如何實現任何類型的值。就像你不能從12
回到6+6
或3*4
一樣。 0x0d
和12
是完全相同的值。
除十進制符號外,用十六進制或八進制符號鍵入數字的選項僅僅是語法示能表示法。你沒有創建任何不同的數值。 0x0D
(十六進制)與13
(十進制)完全相同,與015
(八進制)完全相同。僅僅它們的符號與它們的radix不同。使用不同基數的數字有時很方便,它不會改變實際的數字。
長話短說:你不能分辨。
你不能。在傳遞給函數之前,您的數字文字被解析爲數字值。該功能只接收表示例如64位的64位數字值。 13,但不知道您是否寫過13
,13.0
,0b1101
,0xd
或0o15
,或者更復雜的表達式,如26/2
或10+3
。
此類信息未在JavaScript中公開。你可能設法做到這一點的唯一方法就是獲得腳本的源代碼,並使用你自己的JS解析器。
或者,考慮傳遞一個字符串。
Javascript中沒有「hexa number」類型。 '0x ...'僅僅是不同的**語法**來表示一個數字。結果仍然是一個純數字值,與以十進制數字輸入時沒有區別。 – deceze
根據語言規則,只能區分數字的_string表示是十六進制還是十進制。一旦解析,數字就是一個數字,不管它最初是如何表示的,而且你不能逆轉這個數字。 –
也許OP意味着Java而不是Javascript? http://www.java2s.com/Tutorial/Java/0040__Data-Type/Hexadecimalintegerliteral.htm –