Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: convert int to byte array in c++

  1. #1
    Ngày gia nhập
    03 2010
    Bài viết
    5

    Post convert int to byte array in c++

    các pác cho em hỏi làm thể nào để convert một số int sang byte array vậy? em đã tìm hiểu trên mạng, một số int chuyển sang kiểu byte array thì có dạng là byte[4], nhưng tìm thấy nhiều cách chuyển, và khi chuyển ngược lại thì không đúng với kết quả ban đầu, mong các pác chỉ giáo dùm và cho em ví dụ nhé. Thank nhiều!

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    C++ Code:
    1. int num = 0;
    2. unsigned char *byteAr = (unsigned char *)#
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Kiểu byte là kiểu quái gì có thể mình ko biết, hay mình cố tình ko biết. Tình cờ mình biết dc: À, kiểu byte này chẳng qua nó cũng biểu diễn các số nguyên. Oke , mình sẽ convert dc byte cho int và ngược lại .
    Hay kiểu byte là cái gì ko biết, mà tình cờ biết dc : À, nó biểu diễn kí tự ah ? OKEY , mình sẽ convert dc với int chẳng hạn .
    Cũng có thể bất ngờ đi lang thang, đọc dc trên tường ai viết : Kiểu byte này nó chứa dc số thực ?? ) . Ô , dc thôi, mình thử convert nó với float xem sao
    Hay trong 1 sự tình cờ khác mình biết dc : Kiểu kí tự (kiểu char) thực chất nó cũng biểu diễn kí tự ở dạng số nguyên, tức là mã ASCII của chúng. Okey, tôi nhắm mắt nhắm mũi convert tất . Tất nhiên là để có sự chính xác tương quan thì phải có quy ước, ràng buộc nào đấy :P

    Cái kiểu mà có [] ở sau tên biến là cái gì cũng chưa biết luôn. Nhưng tôi dc dạy nó thực ra bản chất cũng là 1 con trỏ đấy. Và ở 1 diễn biến khác, tôi dc anh bạn bảo cái kiểu mà có * ở đầu tên biến là kiểu con trỏ đấy. Tôi viết "cái mà có [] ở sau" vào bàn tay trái và chú thích nó là CON TRỎ, sau đó gập tay lại , quên đi, đút tay vào túi. Ko quan tâm nữa . Tôi viết "cái mà có * ở trước" vào bàn tay phải và chú thích CON TRỎ . Xong.
    1 Ngày đẹp trời tôi muốn xem tay mình dạo này da dẻ có mịn màng ko. Tôi đem 2 bàn tay ra ngắm, đọc dc nội dung trên 2 bàn tay. Bấc giác tôi ngẫm lại 1 tí rồi thấy: Ô , 2 cái này nó giống nhau ah , vậy thì nó có thể CONVERT với nhau dc rồi .

    Câu chuyện trên có lẽ sẽ dài dòng 1 chút đối với những bạn ko thích dùng cặp mắt cùa mình để "ĐỌC" nhiều.

    Cốt lõi việc convert giữa 2 kiểu dữ liệu là thế này nhé :
    1) Xác định 2 kiểu dữ liệu có tương quan ko, KDL A có = hay bao trùm KDL B ko , và ngược lại ? . Nếu câu trả lời là có thì qua bước 2, nếu câu trả lời là ko thì CANNOT CONVERT và byebye
    2) Có thể bị lost data nếu bạn cố nhét 1 miền lớn vào 1 miền bé . Và sự lost data đó nó có ảnh hưởng đến an toàn dữ liệu của biến ko ? . Nếu câu trả lời là ko thì OK , ta thực hiện convert , nếu câu trả lời là ko thì WARNING : Có thể sẽ nguy hiểm về lâu dài khi vấn đề này nằm trong 1 hệ thống lớn, nó sẽ sinh ra lỗi KHÓ ĐỠ .

    Rồi, và ghi nhớ trong đầu là trong C có 2 loại biến cơ bản thường dùng là biến thường và biến con trỏ . Thế thôi.
    Con trỏ thì nó chứa gì trong đó, biến thường thì chứa gì trong đó.
    Ngẫm lại 1 chút , bạn sẽ tự mình tìm ra câu trả lời HAY HO NHẤT và CÓ GIÁ TRỊ NHẤT . Để sau này bạn có thể tự khẳng định trong mọi trường hợp tương tự "Nhiều cách chuyển " , và "chuyển ngược lại có đúng ko "
    Thế nhé. Kiến thức hạn hẹp chỉ có vậy nên mình cũng chỉ có thể diễn giải dc đến mức đó. Nếu có sai sót gì mong dc nhiệt tình giúp đỡ
    Thân ái !
    Đã được chỉnh sửa lần cuối bởi clchicken : 22-10-2011 lúc 11:58 AM.

  4. #4
    Ngày gia nhập
    03 2010
    Bài viết
    5

    kiến thức c++ của em nó còn hạn hẹp nên diễn tả có lẽ nó cũng không chính xác lắm, nhưng chắc chán là các anh sẽ hiểu ý em muốn hỏi gì rùi )
    Nhân tiện các anh giúp em một vấn đề nữa nhé:
    vd:
    char c[] = {1,2,3,4,5}; thì c có kích thước là: len = sizeof(c) = 5 (byte);
    còn char* c = "12345678"; thì sizeof(c) luôn bằng 4.
    vậy làm thế nào để em biết được char* c trên có kích thước bao nhiêu byte?

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi phuongtk Xem bài viết
    kiến thức c++ của em nó còn hạn hẹp nên diễn tả có lẽ nó cũng không chính xác lắm, nhưng chắc chán là các anh sẽ hiểu ý em muốn hỏi gì rùi )
    Bài post phía trên của mình đã trả lời bạn rồi đó, bạn cứ thử sẽ thấy.

    Trích dẫn Nguyên bản được gửi bởi phuongtk Xem bài viết
    Nhân tiện các anh giúp em một vấn đề nữa nhé:
    vd:
    char c[] = {1,2,3,4,5}; thì c có kích thước là: len = sizeof(c) = 5 (byte);
    còn char* c = "12345678"; thì sizeof(c) luôn bằng 4.
    vậy làm thế nào để em biết được char* c trên có kích thước bao nhiêu byte?
    c[] là con trỏ hằng, ko thay đổi được giá trị lúc chạy. Con trỏ này do trình biên dịch cấp phát và dĩ nhiên chính trình biên dịch phải biết được rằng nó cấp phát bao nhiêu để đem vào chỗ sizeof(c).

    *c nó là con trỏ biến, lúc nó trỏ chỗ này, lúc nó trỏ chỗ khác. Nó có thể bị thay đổi lúc chạy chương trình. Lúc đầu bạn cho nó trỏ vào một chuỗi hằng, nhưng ai biết sau này bạn còn đem nó trỏ đi đâu khác nữa. Như thế thì làm sao có thể xác định được size trong khi ko có gì là chắc chắn. Chưa kể nội dung cũng ko xác định được, lúc chuỗi, lúc số ... Do đó việc xác định kích thước nội dung vùng nhớ bất kỳ do con trỏ trỏ tới là ko làm được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    03 2010
    Bài viết
    5

    Mặc định convert int to byte array in c++

    thank! meoconlongvang ý 1 em đã giải quyết được, nếu ý 2 không có cách thì hãy xem cho em lỗi này nhé:
    Code:
    void test(int len)
    {
     char c[len]; //error C2466: cannot allocate an array of constant size 0
    }
    làm thế nà để tạo một char c[] với kích thước phụ thuộc vào biến mình truyền vào?

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Trích dẫn Nguyên bản được gửi bởi phuongtk Xem bài viết
    thank! meoconlongvang ý 1 em đã giải quyết được, nếu ý 2 không có cách thì hãy xem cho em lỗi này nhé:
    Code:
    void test(int len)
    {
     char c[len]; //error C2466: cannot allocate an array of constant size 0
    }
    làm thế nà để tạo một char c[] với kích thước phụ thuộc vào biến mình truyền vào?
    Bạn ko dc quyền cấp 1 vùng nhớ cố định với kích thước chưa xác định.
    Chỉ có cách khai báo mảng động = con trỏ.
    char *c=new char[len]; // Nếu bạn dùng C++.
    char *c=(char *)malloc(sizeof(char)*len); // Cả C và C++ đều dc.

    Niệm thần chú câu này

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

  1. Database Cách convert hình ảnh sang kiểu byte để lưu trực tiếp ảnh xuống SQL?
    Gửi bởi vosydao trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 21-04-2013, 07:32 AM
  2. In byte array ra textbox C# như thế nào
    Gửi bởi jed trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 08-12-2011, 09:52 AM
  3. Chuyển đổi byte array thành string ascii
    Gửi bởi khaclub trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 11-06-2011, 04:41 PM
  4. Lỗi khi "Convert Byte Array to Object"
    Gửi bởi congacongnghe trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 28-04-2011, 09:26 AM
  5. Lỗi Cannot implicitly convert type khi Convert Array to List trong WCF ???
    Gửi bởi dangbk trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 26-09-2010, 05:43 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