ج Convert تحويل سلسلة إلى بايت لإرسال عبر برنامج التعاون الفني
-
27-10-2019 - |
سؤال
أحاول إرسال سلسلة أحرف 28 إلى عنوان إب البعيد والمنفذ.لقد فعلت هذا بنجاح في vb.net استخدام مقتطفات التعليمات البرمجية التالية:
Dim swon As String = "A55A6B0550000000FFFBDE0030C8"
Dim sendBytes As [Byte]()
sendBytes = Encoding.ASCII.GetBytes(swon)
netStream.Write(sendBytes, 0, sendBytes.Length)
لدي الآن لتحويل هذا عبر إلى ج have ويكون ما يلي حتى الآن:
char *swon = "A55A6B0550000000FFFBDE0030C8";
array<Byte>^ sendBuffer = gcnew array<Byte>(bufferSize);
sendBuffer = BitConverter::GetBytes( swon );
tcpStream->Write(sendBuffer, 0, sendBuffer->Length);
ولكن أنا تتعثر في هذه المرحلة.أنا متأكد من أنني أفتقد خطأ بناء جملة بسيط ولكن لا يمكنني معرفة ذلك!
لتوضيح ، أنا لا تحصل على خطأ ، ولكن لا أعتقد أن يتم تحويل السلسلة إلى بايت بشكل صحيح كما هو الحال عندما تحويل مرة أخرى ، وأنا مجرد الحصول على '01'
في صحتك, كريس
المحلول
أنا لا أفهم لماذا كنت لا تستخدم فقط نفس الطبقات الإطار الصافي بالضبط في رمز CL/كلي الخاص بك.على سبيل المثال. System::String
ل swon
, Encoding::ASCII
لإنتاج مجموعة من وحدات البايت.
أي شيء فعلته في رموز يمكنك تعيين مباشرة أكثر من ج/ / كلي دون استخدام فئات مختلفة-وهذا هو أسهل ميناء بالنسبة لك.عندما كنت في مسن على الانترنت ، ما عليك سوى اختيار C++
عرض للحصول على أمثلة من الاشياء التي تريد القيام به.جرب ذلك في هذه الصفحة ، على سبيل المثال: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx
نصائح أخرى
كان ستيف محقًا في إمكانية تكرار نفس المنطق في C ++.لكن رمز الترميز العام C ++ هو بالفعل ASCII ، فلا يلزم إجراء تحويل.كل ما تحتاجه هو مجرد نسخة. Genacodicetagpre