mình có chuỗi 4 ký tự abcd,khi lưu vào văn bản thì sẽ tốn 4*8 bits,nhưng sau khi mình mã hóa được thì được chuỗi 1010011001 vậy làm sao để lưu vào văn bản dưới dạng mỗi 1 số 0 or 1 chỉ tốn 1 bits
Làm sao để lưu số 0 1 dưới dạng bits
Phải lưu dưới dạng byte
nhưng mình đang học nén file văn bản mà,nén mà ra file to hơn thì chết
Ý mình là lưu mỗi 8 bit đó thành 1 byte. Chẳng hạn
void writeEncode(FILE *f_out, string code, int &n_bit, unsigned char &byte){
for (int i = 0; i < code.length(); i++) {
byte = byte << 1;
byte = byte | (unsigned char)(code[i] - 48);
n_bit++;
if (n_bit == 8){
fwrite(&byte, sizeof(unsigned char), 1, f_out);
byte = 0;
n_bit = 0;
}
}
}
Bài của tớ nên không share được nhiều hí hí
giải thích giúp mình được không phong?
Giờ mình bận rồi bạn lên Gr này hỏi sẽ có nhiều câu trả lời hơn đấy https://www.facebook.com/groups/768122753246300/
Bạn chỉ có thể lưu dữ liệu trong máy tính với đơn vị nhỏ nhất là Byte. Vì không có kiểu dữ liệu nào “nhỏ hơn” 1 Byte cả.
Mình đọc mấy lần vẫn không hiểu ý của @Htc nhỉ. Bạn mã hóa thành chuỗi 1010011001
như thế nào?
Em nghĩ nếu chỉ mã hoá những kí tự trong 26 chữ cái thường, thì có thể mã hoá 1 kí tự với tối đa 5 bits.
Cụ thể:
a = 1 = 00001
.
.
.
.
z = 26 = 11010
Vậy còn các ký tự hoa và các ký tự khác nữa thì sao?
mình nén huffman được bảng mã sau a:11 b:10 c:01 (ví dụ thế) thì đoạn abc của mình sẽ là 111001.nếu lưu dưới dạng bình thường thì sẽ là 68 bits(111001) >38 bits(abc)
ủng hộ bạn nhiệt tình làm video về cái này