2011-04-24 6 views

उत्तर

5

फिर आप पर एक चार के टुकड़े बदलाव, या उन्हें पूर्णांक में गठबंधन करने के लिए की जरूरत है:

unsigned int final = 0; 
final |= (data[0] << 24); 
final |= (data[1] << 16); 
final |= (data[2] << 8); 
final |= (data[3]  ); 

वर्ण की एक सरणी का उपयोग करता है यही कारण है कि है, लेकिन यह कोई फर्क नहीं पड़ता कैसे डेटा में आ रहा है एक ही सिद्धांत है । (मैं मैं बदलाव का अधिकार मिल गया लगता है)

+0

मैं सी –

+0

ओह में उदाहरण कोड में 'char' कीवर्ड उपयोग करने का सुझाव नहीं होगा, हाँ, यह बुरा है। फिक्स्ड। :) – ssube

+0

यदि 'डेटा' एक 'हस्ताक्षरित चार' सरणी है, तो' | = 'और' << 'आपकी इच्छानुसार काम नहीं करेगा। –

0

आप इस तरह यह कर सकता है (नहीं बिट के लिहाज से, लेकिन शायद अधिक आसान):

unsigned int a; 
char *c; 

c = (char *)&a; 
c[0] = 'w'; 
c[1] = 'o'; 
c[2] = 'r'; 
c[3] = 'd'; 

या आप चाहते हैं, तो थोड़ा-वार आप का उपयोग कर सकते हैं:

unsigned int a; 
a &= ~(0xff << 24); // blank it 
a |= ('w' << 24); // set it 
// repeat with 16, 8, 0 

यदि आप पहले इसे खाली नहीं करते हैं तो आपको दूसरा परिणाम मिल सकता है।

+1

क्या आपको एक कलाकार की आवश्यकता नहीं है, क्या यह सी = (char *) और ए होना चाहिए? –

+0

यह वैकल्पिक होगा। मैं इसे जोड़ दूंगा। धन्यवाद – Iustin

3

एक और तरीका यह है:

#include <stdio.h> 
union int_chars { 
    int a; 
    char b[4]; 
}; 
int main (int argc, char const* argv[]) 
{ 
    union int_chars c; 
    c.a = 10; 
    c.b[0] = 1; 
    c.b[1] = 2; 
    c.b[2] = 3; 
    c.b[3] = 4; 
    return 0; 
} 
0

अधिक सरल, इसकी बेहतर:

/* 
** Made by CHEVALLIER Bastien 
** Prep'ETNA Promo 2019 
*/ 

#include <stdio.h> 

int main() 
{ 
    int i; 
    int x; 
    char e = 'E'; 
    char t = 'T'; 
    char n = 'N'; 
    char a = 'A'; 

    ((char *)&x)[0] = e; 
    ((char *)&x)[1] = t; 
    ((char *)&x)[2] = n; 
    ((char *)&x)[3] = a; 

    for (i = 0; i < 4; i++) 
    printf("%c\n", ((char *)&x)[i]); 
    return 0; 
}