मैं एक संदेश हैजावा हेक्साडेसिमल
static int[] message = {
0x01, 0x10, 0x00,
0x01, // port addres 01 - 08
0x00, 0x01, 0x02,
0x06, 0x00,
0xA4, 0x21
};
मैं जानता हूँ कि डेटा ठीक कह रहे हैं, के रूप में मैं उन्हें RXTX साथ COM पोर्ट के लिए लिख रहा हूँ, और मैं सही HW प्रतिक्रिया मिल गया
मुझे लगता है कि 0x01
पता 1
मान है, और वास्तव में 01
(जो दो बिट्स, चौथाई बाइट लंबा है)
जब मुझे संदेश समायोजित करने की आवश्यकता है, तो इस तरह के मान उत्पन्न कर रहे हैं?
message[index] = 1 & 0xff
मैं इस टुकड़ा के उत्पादन में देखते हैं, और यह ठीक लग रहा है
for (int i = 0; i < 255; i++) {
System.out.println(i & 0xff);
}
कोई चादर तुम मुझे सलाह देते हैं पढ़ने के लिए है?
int
सही में इन नंबरों को संगृहीत करना, जैसा कि हम मूल्यों के लिए उपयोग कर सकते हैं byte (-128, +127)
नहीं <0x00, 0xFF>
रेंज
आप बाइट्स का उपयोग कर सकते हैं। लेकिन आपको प्रत्येक मूल्य को बाइट में डालना होगा: 'बाइट [] संदेश = {(बाइट) 0xff}; ' –
*" मुझे पता है कि ऑक्सओ 1 1 मान है, और वास्तव में 01 की तरह भेजा गया है (जो दो बिट्स है) "* जब तक आप ऐसा करने के लिए कुछ कर रहे हैं। जावा 'int' एक 32-बिट मान ([संदर्भ] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) है)। सिर्फ इसलिए कि मूल्य * की आवश्यकता नहीं है * उन सभी बिट्स का मतलब यह नहीं है कि वे नहीं भेजे जाते हैं।आप जो भेज रहे हैं उसका आकार इस बात से सीमित हो सकता है कि आप इसे कैसे भेज रहे हैं, लेकिन आपके द्वारा उद्धृत अन्य मूल्यों को देखते हुए, आप सुनिश्चित कर सकते हैं कि आप कम से कम आठ बिट्स भेज रहे हैं। –
शायद आपको बाइटबफर – fge