2010-06-30 12 views
12

में एक हस्ताक्षरित शॉर्ट के रूप में एक छोटा प्रिंट कैसे प्रिंट करूं, मेरे पास कम से कम एक सरणी है जिसका मूल्य 0 और कम के अधिकतम मूल्य के बीच है। मैं डेटा को स्केल करता हूं (इसे TYPE_USHORT के रूप में प्रदर्शित करने के लिए) ताकि परिणामस्वरूप छोटे मान 0 और 65535 के बीच हो। मुझे कुछ स्केल किए गए मानों को प्रिंट करने की आवश्यकता है लेकिन यह पता नहीं लगा सकता कि कैसे। डेटा एक सरणी में और BufferedImage में हैं।मैं जावा

+0

जिम, यह मैं अंत में खुद के लिए पता लगा और उत्तर पोस्ट नहीं था कि मैं क्या चाहता था, मैं वैसे भी यह स्वीकार करते हैं इससे पहले कि सवाल? मुझे यह कहना चाहिए था कि डेटा दोनों छोटी और बुफर्ड छवि में हैं। धन्यवाद –

उत्तर

23

सबसे आसान तरीका int करने के लिए कन्वर्ट करने के लिए है:

short s = ...; 
int i = s & 0xffff; 

bitmask रूपांतरण रेंज 0-65,535 बजाय -32,768-32,767 में एक मूल्य देना सुनिश्चित करने के लिए है।

+0

धन्यवाद, यह सही दिखता है! –

13

जावा 1.8 के बाद से, एक ही Short.toUnsignedInt साथ किया जा सकता:

System.out.println("signed s=" + s + ", unsigned s=" + Short.toUnsignedInt(s)) 
+3

क्या अंतर आता है। –