현재 저는 허프만 디코딩을 기반으로 파일 압축기를 연구 중입니다. , 0 비트를 써, 각 잎은 "스몰 토크에서 비트를 조작하는 방법은 무엇입니까?
: 그래서 디코딩 트리과 같이 있습니다
나는 특정 기준에 따라 출력 파일에이 나무를 인코딩해야 그 다음에 대응하는 문자 인 의 8 비트가 후속된다. 비트 7, 비트 6, ..., 비트 0, 즉 상위 비트부터 순서대로 비트를 기록한다. 특수한 경우로서, 바이트가 0이면, 비트 8은 0의 바이트 값에 대해 0이고, 256의 바이트 값에 대해서는 1입니다 (EOF 마커). " 내부 노드의 경우 비트 1을 작성하면됩니다.
그래서 할 일은 비트 배열을 만들고 해당 비트를 지정된 형식으로 추가하는 것입니다. 문제는 smalltalk에서 숫자를 이진수로 변환하는 방법을 모른다는 것입니다.
예를 들어 첫 번째 리프를 인코딩하려는 경우 01101011과 같은 작업을 수행합니다. 예를 들어 0을 k의 비트 표현으로 처리 한 다음 모든 비트를 배열에 하나씩 추가하려고합니다.
방언에서 사용할 수 없다면'BitStream'도 구현하는 것이 현명합니다. 그렇지 않니? –
예, BitStream은 특히 인코딩/디코딩에 유용합니다. –