Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 24 kết quả

Đề tài: đọc file 4bit một thì làm thế nào !

  1. #1
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    Mặc định đọc file 4bit một thì làm thế nào !

    lại có điều băn khoăn muốn hỏi. Không biết có bác nào biết cách đọc một file mà chỉ đọc 4bit một không! rồi sau đó sẽ sử lý các gói 4bit nè như một số nhị phân

  2. #2
    Ngày gia nhập
    02 2008
    Bài viết
    66

    Mình không thây đọc được đến đơn vị bit bao giờ. Cách đơn giản nhất là bạn đọc từng byte một sau đó bẻ nó làm đôi ta có 4 bit một.
    Visual C++ Code:
    1. using namespace System;
    2. using namespace System::IO;
    3. int main()
    4. {
    5.    String^ fileName =  "Test@##@.dat";
    6.    
    7.    // Create random data to write to the file.
    8.    array<Byte>^dataArray = gcnew array<Byte>(100000);
    9.    (gcnew Random)->NextBytes( dataArray );
    10.    FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
    11.    try
    12.    {
    13.      
    14.       // Write the data to the file, byte by byte.
    15.       for ( int i = 0; i < dataArray->Length; i++ )
    16.       {
    17.          fileStream->WriteByte( dataArray[ i ] );
    18.  
    19.       }
    20.      
    21.       // Set the stream position to the beginning of the file.
    22.       fileStream->Seek( 0, SeekOrigin::Begin );
    23.      
    24.       // Read and verify the data.
    25.       for ( int i = 0; i < fileStream->Length; i++ )
    26.       {
    27.          if ( dataArray[ i ] != fileStream->ReadByte() )
    28.          {
    29.             Console::WriteLine( "Error writing data." );
    30.             return  -1;
    31.          }
    32.  
    33.       }
    34.       Console::WriteLine( "The data was written to {0} "
    35.       "and verified.", fileStream->Name );
    36.    }
    37.    finally
    38.    {
    39.       fileStream->Close();
    40.    }
    41.  
    42. }
    Việc đổi một giá trị ra số nhị phân được đề cập nhiều trong điễn đàn rồi bạn nên tự tìm.

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,760

    Đọc từng byte và tách ra thành low_nibble và high_nibble. Sau đây là cách mà mình đưa ra:
    C++ Code:
    1. low_nibble = byte & 0xF;
    2. high_nibble = (byte & 0xF0)>>4;

    Tuy nhiên là kiểu dữ liệu nhỏ nhất là 1 byte, nếu có tách thì cũng vẫn là xử lý một byte thôi, nhưng dữ liệu chỉ có 4 bit thôi!

    Bạn thử xem thế nào?
    Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.
    Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.

  4. #4
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    bạn ơi giải thích cho mình con số này là gì 0xF; ah byte ở đây là biến gì đó !

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    0xf là 16 trong hệ 16 1 byte kết hợp với 0xf theo phép and sẽ giữ nguyên 4 bit sau, 4 bit trước thành 0 hết, còn với 0x0f thì ngược lại, mà
    high_nibble = (byte & 0xF0)>>4;
    chỉ cần là
    high_nibble = byte >> 4;
    cho nhanh
    byte là 1 biến kiểu byte
    Life:\> dir

  6. #6
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    Mặc định đọc file 4bit một thì làm thế nào !

    nhưng bạn ơi trong c++ hình như chỉ cho đọc theo kiểu string một thôi ! chứ đâu cho đọc theo byte?
    istream&read (char,int) mà
    mình có thể ép kiểu để char chuyển vô byte không
    vì mình cần con số này để làm phép toán nữa ???

  7. #7
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    746

    1 nguyên tắc cơ bản của ngôn ngữ C/C++: kiểu [signed] char cũng là số nguyên có dấu còn unsigned char cũng là số nguyên không dấu. Ví dụ thực tế, gần như một qui tắc bất thành văn là khi một hàm thư viện C nhận 1 kí tự làm tham số thì tham số ấy được khai báo với kiểu int chứ không phải kiểu char.

    Thế cho nên chuyển đổi [signed] char -> [signed] short [int] -> [signed] int -> [signed] long [int] cũng như chuyển đổi unsigned char -> unsigned short [int] -> unsigned [int] -> unsigned long [int] là tự nhiên và tự động, không cần phải "ép kiểu" gì cả.

  8. #8
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    minh viết một đoạn code như sau
    nhưng nó chưa ổn ! nhất là phần chia số ý ! kết quả ra chua đúng
    ah còn cả việc ghi vào file mới nữa các bạn xem giúp mình với
    Code:
    #include <iostream.h>
    #include <fstream.h>
    #include <conio.h>
    
    void main()
    {
      unsigned char * block,*p,low_block,high_block;
      int i,j,k,crc;
    clrscr();
    ifstream input("C:\\vidu\\vidu.txt",ios::binary|ios::in);
    ofstream out("transmit",ios::noreplace | ios::binary|ios::ate);
    if (!input)
    {
    cout << "loi khong mo duoc file " ;
    }
    else
    {
    while (input)
    {
    input.read(block,1);
    //tach block ra lam 2 byte chua 4 bit dau va cuoi
    low_block= *block &(0xF);
    high_block = *block>>4;
    // chia gia cac gia tri nay cho so G =9 xay dung khung 7bit
    crc = high_block % 9;
    high_block = high_block*8 + crc;
    *p = high_block;
    out.write(p,1);
    crc = low_block % 9;
    low_block = low_block * 8 +9;
    *p = low_block ;
    out.write(p,1);
    
    }
    }
    out.close;
    input.close();
    getch();
    
    }
    file transmit thu được không hiểu sau chỉ có mỗi một kí tự ???

  9. #9
    Ngày gia nhập
    05 2008
    Nơi ở
    Hà Nội
    Bài viết
    16

    thực ra yêu cầu còn khó hơn chút nưa ! mình còn phải đưa về số nhị phân rồi làm trên số nhị phân nữa ! và mình còn phải ghi vào một byte mới với nội dung của số đó với ý nghĩa vẫn là file này ! phần này do chưa hiểu sâu nên mình cảm thấy mung lung quá ! :((

  10. #10
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    746

    Trích dẫn Nguyên bản được gửi bởi calme1202 Xem bài viết
    minh viết một đoạn code như sau
    nhưng nó chưa ổn ! nhất là phần chia số ý ! kết quả ra chua đúng
    ah còn cả việc ghi vào file mới nữa các bạn xem giúp mình với
    Code:
    #include <iostream.h>
    #include <fstream.h>
    #include <conio.h>
    
    void main()
    {
    ....
    }
    Chương trình này làm gì? Nội dung của file đầu vào như thế nào? Nếu chạy đúng, nội dung file đầu ra phải như thế nào?

Các đề tài tương tự

  1. Bài tập C++ Đọc File như thế nào trong c++ ? Code đọc file của em như thế này là lỗi ở đâu ?
    Gửi bởi vipnho0209 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 03-06-2013, 09:28 PM
  2. Trả lời: 3
    Bài viết cuối: 10-04-2013, 08:06 AM
  3. Chuyển đổi file JFrame Form thành file java class trong netbeans như thế nào???
    Gửi bởi quanganhpd93 trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 02-03-2013, 08:47 AM
  4. Chuyển 1 file html 25mb sang file word như thế nào ?
    Gửi bởi hoanglinh9466 trong diễn đàn Thắc mắc chung
    Trả lời: 3
    Bài viết cuối: 26-06-2011, 11:28 PM
  5. File server để dùng ajax trong visual2010 là file gì, xử lý kết nối với SQLserver như thế nào?
    Gửi bởi lenamshenlong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 26-05-2011, 05:14 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn