का जुटना द्विआधारी संख्या तो मैं 3 नंबर हैं। एक एक char
है, और अन्य दो int16_t
हैं (यह भी short
रों रूप में जाना जाता है, लेकिन एक तालिका के अनुसार मैंने पाया शॉर्ट्स मज़बूती से 16 बिट नहीं होगा)।अलग-अलग लंबाई
मैं उन्हें एक साथ जोड़ करना चाहते हैं। तो कहना है कि उनमें से मूल्यों थे:
10010001
1111111111111101
1001011010110101
मैं एक long long
युक्त साथ खत्म करना चाहते हैं:
1001000111111111111111011001011010110101000000000000000000000000
का उपयोग करना कुछ समाधान जो मैंने ऑनलाइन पाया है, मैं सी इसके साथ ame:
long long result;
result = num1;
result = (result << 8) | num2;
result = (result << 24) | num3;
लेकिन यह काम नहीं करता है; जब यह डीकोड किया जाता है तो यह मुझे बहुत विषम संख्या देता है।
मामले में मेरे डिकोडिंग कोड के साथ एक समस्या है, यहाँ यह है:
char num1 = num & 0xff;
int16_t num2 = num << 8 & 0xffff;
int16_t num3 = num << 24 & 0xffff;
यहाँ क्या हो रहा है? मुझे संदेह है कि इसे long long
के आकार के साथ करना है, लेकिन मैं इसके चारों ओर अपने सिर को लपेट नहीं सकता और मैं बाद में इसमें अधिक संख्या के लिए कमरा चाहता हूं।
मैं उस पर ध्यान दूंगा, लेकिन मैं एक अलग दृष्टिकोण (बाएं के बजाए दाईं ओर संख्याओं को डालने) के बारे में सोच सकता हूं क्योंकि सादे संख्या सबसे तेज़ हैं। – Cheezey
वह 'लंबे समय तक' का उपयोग कर रहा है, न कि 'लंबा'। 'लंबे समय तक' कम से कम 64 बिट्स स्टोर कर सकते हैं, उन्हें केवल 40 की जरूरत है। –