2013-08-13 4 views
5

printf() में मुझे याद है अहस्ताक्षरित के लिए है %u ... लेकिन अगर मैं एक बड़ी unsigned पूर्णांक तो %d उस पर सही ढंग से काम करेंगे मैं String.format()स्ट्रिंग.फॉर्मैट() में% d करता है बिना हस्ताक्षरित पूर्णांक के लिए भी काम करता है?

तो

के लिए ऐसी कोई %u चश्मा में मिल सकती है?

+9

जावा में हस्ताक्षरित पूर्णांक नहीं हैं – Kevin

+0

जावा 8 में हस्ताक्षर किए गए पूर्णांक हैं। – boring

+0

AFAIK जावा 8 में असाइन किए गए प्रकारों के लिए सामान्य वर्कअराउंड के लिए एक एपीआई है। –

उत्तर

9

आप एक पूर्णांक के रूप में अगर यह अहस्ताक्षरित थे आप कर सकते हैं करने के लिए

int i = ... 
String s = String.format("%d", i & 0xFFFFFFFFL); 

यह प्रभावी रूप से एक लंबे में हस्ताक्षर किए पूर्णांक बदल जाता है, लेकिन यह 0 से हो जाएगा .. 2^31-1

के इलाज के लिए चाहते हैं

रिवर्स आप

int i = (int) Long.parseLong(s); 
String s2 = String.format("%d", i & 0xFFFFFFFFL); 

कर सकते हैं और जैसा कि s बशर्ते वह सीमा में है s2 ही होगा ऐसा करने के लिए।

बीटीडब्लू: सबसे आसान काम करने के लिए पहले स्थान पर long का उपयोग करना हो सकता है। जब तक आप बना रहे हैं, तो इनमें से अतिरिक्त मेमोरी तुच्छ है और कोड सरल है।

संबंधित मुद्दे