30/09/2018, 16:20

Làm sao để lưu số 0 1 dưới dạng bits

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

Trần Hồng Phong viết 18:29 ngày 30/09/2018

Phải lưu dưới dạng byte

Hồ Thế Chín viết 18:23 ngày 30/09/2018

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

Trần Hồng Phong viết 18:36 ngày 30/09/2018

Ý 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í

Hồ Thế Chín viết 18:23 ngày 30/09/2018

giải thích giúp mình được không phong?

Trần Hồng Phong viết 18:28 ngày 30/09/2018

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/

Hoàng Cường viết 18:24 ngày 30/09/2018

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ả.

Nguyễn Minh Dũng viết 18:34 ngày 30/09/2018

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?

viết 18:28 ngày 30/09/2018

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
Nguyễn Minh Dũng viết 18:29 ngày 30/09/2018

Vậy còn các ký tự hoa và các ký tự khác nữa thì sao?

Hồ Thế Chín viết 18:22 ngày 30/09/2018

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)

Nguyễn Minh Dũng viết 18:30 ngày 30/09/2018

Có thể @Htc đang cần cái này

Lâu lâu khi đọc code C bạn sẽ thấy cái này. Share ra cho mọi biết chơi về bit fields. Khi nào rảnh Đạt sẽ viết bài hoặc videos về cái này. Copy từ wiki: http://www.wikiwand.com/en/Bit_field // bit field box properties struct box_props { unsigned int opaque : 1; unsigned int fill_color : 3; unsigned int : 4; // fill to 8 bits unsigned int show_border : 1; unsigned int border_color : 3; unsigned int border_style : 2; unsigned int …
Hồ Thế Chín viết 18:24 ngày 30/09/2018

ủng hộ bạn nhiệt tình làm video về cái này

Nguyễn Minh Dũng viết 18:33 ngày 30/09/2018

@Htc có thắc mắc gì về tài liệu đó không?

Bài liên quan
0