मैं एक पुराने विजुअल बेसिक प्रोग्राम को सी # में परिवर्तित कर रहा हूं। यह ईथरनेट पर कुछ औद्योगिक मशीनरी को संदेश भेजता है। ऐसा करने के लिए यह निश्चित आकार के उपयोगकर्ता परिभाषित हिस्सों से बाइट्स की एक धारा को इकट्ठा करता है।मैं सी # में निश्चित आकार बाइट सरणी उपयोगकर्ता प्रकार कैसे बना सकता हूं?
इन टुकड़ों से अधिकांश छोटे हैं और सी # में यह कुछ बाइट्स या ints की structs बना सकते हैं और StructLayout का उपयोग उनके आकार और लेआउट को नियंत्रित, उदाहरण के
[StructLayout(LayoutKind.Sequential, Pack = 1)]
के लिए आसान है ... इसलिए जब हम में जाने एक ही तरह की प्रतिलिपि करने के लिए अप्रबंधित स्थान हमारे पास बाइट ऑर्डर या पैडिंग समस्याएं नहीं हैं।
लेकिन VB6 संरचनाओं के कुछ उदाहरण के लिए, बड़ा सरणियों कर रहे हैं,
Private Type SEND_MSG_BUFFER_320_BYTES
bytes(0 To 319) As Byte '320 bytes
End Type
और मैं कैसे सी # में यह करने के लिए के साथ संघर्ष कर रहा हूँ। मैं एक कक्षा में एक निश्चित आकार सरणी बना सकते हैं, जैसे,
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class SOME_BYTES
{
public byte[] b = new byte[320];
}
लेकिन बाइट के लिहाज से प्रति मैं क्रम और System.Runtime.InteropServices.Marshal पर इस के आकार को खोजने के लिए सक्षम होना चाहिए करने के लिए। SizeOf इसके लिए देता है।
यह कैसे करें इसके लिए कोई सुझाव बहुत सराहना की जाएगी।
यह चाल है। मुझे निश्चित रूप से संपूर्ण इंटरऑप सर्विसेज/मार्शलएएस सेवाओं की श्रृंखला पर और अधिक पढ़ना है क्योंकि ऐसा लगता है कि मैं इस परियोजना के लिए उनके बगल में रहूंगा! – user316117