भले ही स्वीकृत उत्तर प्रश्न के अनुरूप हो, मैं इस तथ्य को सरल मानता हूं कि प्रश्न में अंतर्निहित है और शीर्षलेख में छोटा नहीं है और यह खोज परिणामों में भ्रामक है, और जैसा कि हम जानते हैं कि सी # में इंट 32 में 32 बिट्स हैं और इस प्रकार 4 बाइट्स। मैं यहां एक उदाहरण पोस्ट करूंगा जो Int32 उपयोग के मामले में उपयोगी होगा। कोई Int32 के मामले में हमने:
- LowWordLowByte
- LowWordHighByte
- HighWordLowByte
- HighWordHighByte।
और इस तरह, मैंने Int32 मान को एक छोटे एंडियन हेक्स स्ट्रिंग में परिवर्तित करने के लिए निम्न विधि बनाई है, जिसमें प्रत्येक बाइट अन्य लोगों से व्हाइटस्पेस से अलग होता है। यह तब उपयोगी होता है जब आप डेटा संचारित करते हैं और रिसीवर को प्रसंस्करण तेज़ी से करना चाहते हैं, तो वह केवल स्प्लिट ("") कर सकता है और बाइट्स को स्टैंडअलोन हेक्स स्ट्रिंग के रूप में प्रदर्शित कर सकता है।
public static String IntToLittleEndianWhitespacedHexString(int pValue, uint pSize)
{
String result = String.Empty;
pSize = pSize < 4 ? pSize : 4;
byte tmpByte = 0x00;
for (int i = 0; i < pSize; i++)
{
tmpByte = (byte)((pValue >> i * 8) & 0xFF);
result += tmpByte.ToString("X2") + " ";
}
return result.TrimEnd(' ');
}
उपयोग:
String value1 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x927C, 4);
String value2 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x3FFFF, 4);
String value3 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x927C, 2);
String value4 = ByteArrayUtils.IntToLittleEndianWhitespacedHexString(0x3FFFF, 1);
परिणाम है:
- 7C 92 00 00
- एफएफ एफएफ 03 00
- 7C 92
- एफएफ।
यदि यह विधि है जो मेरे द्वारा बनाए गए समझना कठिन है, तो निम्नलिखित एक अधिक सुबोध एक हो सकता है:
public static String IntToLittleEndianWhitespacedHexString(int pValue)
{
String result = String.Empty;
byte lowWordLowByte = (byte)(pValue & 0xFF);
byte lowWordHighByte = (byte)((pValue >> 8) & 0xFF);
byte highWordLowByte = (byte)((pValue >> 16) & 0xFF);
byte highWordHighByte = (byte)((pValue >> 24) & 0xFF);
result = lowWordLowByte.ToString("X2") + " " +
lowWordHighByte.ToString("X2") + " " +
highWordLowByte.ToString("X2") + " " +
highWordHighByte.ToString("X2");
return result;
}
टिप्पणी:
- बेशक वहाँ uint pSize की insteand बाइट, वर्ड, डबलवॉर्ड
- हेक्स स्ट्रिंग में परिवर्तित करने और छोटी एंडियन स्ट्रिंग बनाने के बजाय, आप वर्णों में परिवर्तित कर सकते हैं और जो कुछ भी आप करना चाहते हैं उसे करने के बजाय एक enum हो सकता है ओ।
आशा है कि यह किसी की मदद करेगा!
ओह वाह मैं एक मंद हूं, स्पष्ट रूप से 0xff के साथ मुखौटा है जो मुझे चाहिए, मुझे नहीं पता कि मैंने 8 क्यों लिखा था, अनुमान है कि मैं 8 बिट्स सोच रहा था। – rolls
'बाइट निचला = (बाइट) संख्या; ' –
@NikitaBrizhak भी करना चाहिए: सच है, लेकिन मुझे इसके बारे में सोचने के लिए सरल से ऊपर का दृष्टिकोण मिलता है :) –