30/09/2018, 19:04
Gán dữ liệu của mảng char X[4] vào biến int A(4 byte)
Chào các bạn, Mình có thắc mắc thế này:
Mảng char X[4] có 4 phần tử( mỗi phần tử 1 byte) tổng cộng 4 byte và biến kiểu int cũng có 4 byte, vậy cho mình hỏi cách nào để chuyển 4 byte của mảng vào biến int ?
Bài liên quan
Ôi trời.
Tạo 1 con trỏ kiểu int, trỏ vào đó là đc.
:)
1 kiểu int, 1 kiểu char trỏ được không nhỉ ?
Mình làm kiểu này :
Đang hóng câu trả lời
trỏ cò bay thẳng cánh luôn
Và nó lấy luôn 1 block 4byte từ địa chỉ luôn
http://ideone.com/A9y4OB
Cảm ơn bạn nhiều lắm mình làm được rồi:
Báo lỗi luôn nè
a thôi.
ko phải &a
(code sai tí )
mà cái vs nó kỹ thật nhỉ
sao mình vẫn bị lỗi nè bạn
Theo như mình biết thì đâu có thể tạo ra con trỏ kiểu int để trỏ vào 1 vùng có kiểu char đc nhỉ -_- , mà rốt cuộc là làm thế để làm gì?
Hmmm, v là cái này tùy vào compiler rồi
Thôi thì cứ làm nhu bạn Dương_Act là ổn nhất (y)
Cast sang int* là dc:
int * p=(int ) a*;
a==&a vì đây là mảng cố định nên địa chỉ của a cũng là của mảng
Làm thế này cho nó an toàn:
Còn nếu bạn sợ pointer thì:
và thế là b không dính dáng gì tới a nữa.
Mình thử đoạn này :
Kết quả xuất ra màn hình là 0. Lẽ ra phải là 65535. Mình có kiểm tra thấy *p = 0.
Mình in ra unsigned int cơ mà. Làm gì có chuyện int ra 1 byte đầu.
Mình đọc nhầm (mà xóa cmt rồi mà nhỉ ) ,mình dùng hàm cout thì nó vẫn ra đúng giá trị ,có thể do sai ở %d vì mình dùng printf thì in sai
#include
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
unsigned char a[4]={0,0,255,255};
Mình dùng như sau :
Mình mới kiểm tra 1 dòng [printf("%u", *p) ] ,thấy kết quả đúng mà , *p của nó lúc này là 0000 0001 0000 0000 0000 0000 0000 0000, bạn tính ra nó là 16777216 ,mấy cái sau thì sai kiểu nên nó sai rồi ,chỉ có dòng %u là đúng kiểu
Đúng rồi.
Nãy giờ vẫn đang nghĩ mục đích sắp xếp theo kiểu CH[0]->CH[1]->CH[2]->CH[3].