2011-07-26 112 views
0

如果我在JavaScript中有一個字符串什麼是計算字符串佔用的字節數或位數的最佳方法?我的第一個想法是,由於EcmaScript規範(5.1)在8.4中聲明EcmaScript中的字符串元素由16位值組成,並且語言使用UTF-16字符編碼,所以我應該得到該代碼的十進制表示形式(charCodeAt),除以2,結果爲底,Bob是你父親的兄弟。有誰知道如何計算字符串中的字節數?

但如果我每個字符轉換爲二進制(的toString(2)),以數位,我算的0和1的?或者只是1的?

從我在線閱讀(和信息是稀疏的),我想這是這樣的:

Math.floor("A".charCodeAt(0)/2); // 32 bits... No? 
+0

這是相當混亂。在M字節符號的字母表上長度爲N的字符串需要N×M個字節來表示......這很簡單。它需要多個位的8倍。 – Patrick87

+0

@shelman是的,但我是否計算0和1的二進制數?或者只是1,因爲1代表「開」狀態,而0代表「關」狀態。 – Tom

+1

UTF-16不是固定寬度編碼(http://unicode.org/faq/utf_bom.html#utf16-1)。一個字符可以佔用16位或32位,但通常它可以放入16位。 – Krab

回答

2

@Charlie所以01000001簡直是8位?涼。你可以把它變成 的答案,這樣我就可以投票了嗎?

究竟,見下文。

你需要的,如果有人問你只是計數位來算兩個0和1。請記住,「位」是衡量信息內容的標準。因此,如果您有一個信息內容爲16位的字段,則表示有2^16種可能的配置,其中您當前的配置僅爲一種。您的位串是其中一種配置,但您需要用零來告訴是否來自其他具有16位的配置。 - 查理馬丁昨天

另外,你知道有關 的任何好書嗎?我自學成才(直到明年)。 :) - 湯姆昨天

我不知道,真的。我搜索了一些,並且一直在學習如何開啓計算機的東西,這些東西你已經明顯已經掌握了。你可以試試Think like a Computer Scientist

3

嗯,如果字符串中的每個元素是16位的,不會的字符串佔用的位數只是string.length * 16?

+0

我可以,但這是一個真正的表示字符串消耗多少內存?我使用這個用於localStorage空間管理,我想配額可以保存多少數據,所以我需要不斷計數,你知道嗎? – Tom

相關問題