2013-03-29 51 views
1

來表示JS的單個字符,我們使用"',即使用長度的串1.是最小的可用內存大小2字節,在JavaScript中?

但由於JavaScript uses the UTF-16 encoding,字符將是16比特爲好。

這樣可以安全地說,2字節是最小的可呈現的大小,這是可能的JS。

或者會有一些數據結構,它可以表示我缺少的單個字節(8位)。

編輯:

我瞭解使用的數據類型與字大小(通常爲4個字節)永遠是最有效的,但我只是想知道,如果JS的創造者會照顧到包括在一些

Actionscript 3也源自ECMAScript以及&它包含一個可變大小的數據類型,即AS3中的整數是1到4個字節的存儲空間。

注意:我沒有真正尋找一個入侵到一個更大的數據類型的多個字節。

猜測答案很可能是

+2

有被定義爲/存儲「8位」的信息沒有價值的ECMAScript 。此外,使用數字而不是單個字符的字符串可能更有效,因爲字符串也必須包含長度並且可能不會受到相同的對象elision優化(這是實現細節)。 – 2013-03-29 04:56:45

+0

準確的最小可表示大小是多少?請記住,任何變量都可以保存_any_值,但不能限制變量只保存一個字符。 – Koterpillar

回答

1

哦,不是在ECMAScript中,但你必須Buffer的Node.js和在瀏覽器中你有Uint8Array

var b = new UInt8Array(16); //Holds 16 bytes 
0

從技術上講,你可以有一個8 booleans的數組 - 但是在存儲數組本身時可能會有很大的開銷。

+1

真假是兩個對象....也許不代表一個單一的位。 – loxxy

+0

是的,但您可以像這樣對待它們,並使用'=== true'進行測試。 – Koterpillar

0

從c風格的聯合中獲取頁面,當然,您可以創建自己的數據結構。使用大的int作爲位圖。

var memory = 0; 

function setbyte(addr, value) { 
    memory = memory | (value << addr); 
} 

function getbyte(addr) { 
    return 0xFF & (memory>>addr) 
} 
+0

但是,這仍然使用「數字」類型.. – 2013-03-29 04:54:23

+0

是的,但你正在存儲多個值。 –

+0

「這樣可以安全地說,2個字節是最小的可顯示大小,這在JS中是可能的,或者會有一些數據結構,它可以表示我缺少的單個字節(8位)。」 – 2013-03-29 04:55:18

相關問題