2011-07-26 6 views
0

JavaScript에 문자열이있는 경우 문자열의 바이트 수 또는 비트 수를 계산하는 가장 좋은 방법은 무엇입니까?누구든지 문자열의 바이트 수를 계산하는 방법을 알고 있습니까?

EcmaScript spec (5.1)은 EcmaScript의 문자열 요소가 16 비트 값으로 구성되어 있으며 언어가 UTF-16 문자 인코딩을 사용한다는 점에서 8 진수의 10 진수 표현을 가져와야한다고 생각했습니다. (charCodeAt), 2로 나누고, 결과에 floor를하고, Bob의 아버지의 형제를 채 웁니다.

그러나 각 문자를 이진수 (toString (2))로 변환하는 경우 비트 수를 계산하기 위해 0과 1을 함께 계산합니까? 아니면 그냥 1이야? 나는 온라인으로 읽었습니다 (그리고 정보가 스파 스) 어떤

에서 내가 생각하고 그것의 같은 : 문자열의 각 요소가 16 비트 인 경우

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

이것은 다소 혼란 스럽습니다. M 바이트 심볼의 알파벳에 걸친 길이 ​​N의 문자열은 N x M 바이트를 나타냅니다. 그것은 많은 비트의 8 배 걸립니다. – Patrick87

+0

@shelman 그래,하지만 바이너리로 0과 1을 셉니다. 또는 1은 1을 "on"상태로 나타내고 0은 "off"상태를 나타 내기 때문입니다. – 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 비트가있는 다른 구성의 경우 0으로 지정해야합니다. - 어제 찰리 마틴

에 대한 좋은 책이 있습니까? 나는 스스로 가르쳤다 (내년 uni까지). :) - Tom 어제

솔직히. 나는 몇 가지 인터넷 검색을했고 컴퓨터를 켤 수있는 방법을 가르쳐 줬다. 시도해보십시오 Think like a Computer Scientist.

3

음은 아닌 것 문자열이 차지하는 비트 수는 string.length * 16입니까?

+0

문자열에 의해 얼마나 많은 메모리가 소비되는지를 알 수 있겠습니까? localStorage 공간 관리에 이것을 사용하고 있으며 저장할 수있는 데이터의 양에 대한 할당량을 넣고 싶습니다. 끊임없이 세고 있니? – Tom

관련 문제