python हरण मैं पायथन में बाइट्स की एक सरणी के रूप में एक पूर्णांक को कैसे व्यवहार करूं?




पूर्णांकों अर्थ (5)

अपने सामान्य प्रश्न का उत्तर देने के लिए, आप बिट हेरफेर तकनीकों का उपयोग कर सकते हैं:

pid, status = os.wait()
exitstatus, signum = status & 0xFF, (status & 0xFF00) >> 8

हालांकि, बाहर निकलने की स्थिति मानों की व्याख्या के लिए अंतर्निहित फ़ंक्शन भी हैं:

pid, status = os.wait()
exitstatus, signum = os.WEXITSTATUS( status ), os.WTERMSIG( status )

यह भी देखें:

  • os.WCOREDUMP ()
  • os.WIFCONTINUED ()
  • os.WIFSTOPPED ()
  • os.WIFSIGNALED ()
  • os.WIFEXITED ()
  • os.WSTOPSIG ()

मैं पायथन ओ। विएत () फ़ंक्शन के परिणाम को डीकोड करने की कोशिश कर रहा हूं। पायथन डॉक्स के अनुसार यह रिटर्न:

एक ट्यूपल जिसमें इसकी पीआईडी ​​और निकास स्थिति संकेत होते हैं: एक 16-बिट संख्या, जिसका कम बाइट संकेत संख्या है जो प्रक्रिया को मार डाला है, और जिनकी उच्च बाइट निकलने की स्थिति है (यदि संकेत संख्या शून्य है); कम बाइट का उच्च बिट सेट किया जाता है यदि कोई कोर फ़ाइल तैयार की गई थी।

उच्च और निम्न बाइट को प्राप्त करने के लिए मैं बाहर निकलें स्थिति संकेत (जो एक पूर्णांक है) को कैसे समझूं? विशिष्ट होने के लिए, मैं निम्न कोड स्निपेट में उपयोग किए जाने वाले डिकोड फ़ंक्शन को कैसे लागू कर सकता हूं:

(pid,status) = os.wait()
(exitstatus, signum) = decode(status) 

यह वह काम करेगा जो आप चाहते हैं:

signum = status & 0xff
exitstatus = (status & 0xff00) >> 8

exitstatus, signum= divmod(status, 256)

इससे पहले कि लोग इसे खदेड़ते हैं, लेकिन यदि आप वास्तव में इसे एक पंक्ति पर चाहते हैं, तो आप यह कर सकते हैं:

(signum, exitstatus) = (status & 0xFF, (status >> 8) & 0xFF)

संपादित करें: इसे पीछे की ओर था


बिट-स्थानांतरण और मास्किंग ऑपरेटर का उपयोग करके आप स्थिति को अनपैक कर सकते हैं।

low = status & 0x00FF
high = (status & 0xFF00) >> 8

मैं एक पायथन प्रोग्रामर नहीं हूं, इसलिए मुझे आशा है कि वाक्यविन्यास सही हो।





python