1

我正在尝试将 28 个字符的字符串发送到远程 IP 地址和端口。我已经使用以下代码片段在 vb.net 中成功完成了此操作:

Dim swon As String = "A55A6B0550000000FFFBDE0030C8"
Dim sendBytes As [Byte]()
sendBytes = Encoding.ASCII.GetBytes(swon)
netStream.Write(sendBytes, 0, sendBytes.Length)

我现在必须将其转换为 c++ 并且到目前为止具有以下内容:

char *swon = "A55A6B0550000000FFFBDE0030C8";
array<Byte>^ sendBuffer = gcnew array<Byte>(bufferSize);
sendBuffer = BitConverter::GetBytes( swon );
tcpStream->Write(sendBuffer, 0, sendBuffer->Length);

但我被困在这一点上。我确定我错过了一个简单的语法错误,但我无法弄清楚!

澄清一下,我没有收到错误,但我认为字符串没有正确转换为字节,因为当我转换回来时,我只是得到一个 '01'

干杯,克里斯

4

2 回答 2

3

我不明白为什么您不只是在 ++/CLI 代码中使用完全相同的 .Net 框架类。例如。System::Stringfor swonEncoding::ASCII生成字节数组。

您在 VB 中所做的任何事情都可以直接映射到 C++/CLI,而无需使用不同的类——这对您来说是最简单的移植。当您在 MSDN 在线时,只需选择C++视图即可获取您想做的事情的示例。在此页面上尝试,例如:http: //msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

于 2011-06-13T15:55:37.633 回答
0

史蒂夫是正确的,可以在 C++ 中复制相同的逻辑。但是 C++char*已经是 ASCII,不需要转换。只需一份副本即可。

const char swon[] = { "A55A6B0550000000FFFBDE0030C8" };
array<Byte>^ sendBuffer = gcnew array<Byte>((sizeof swon) - 1);
pin_ptr<Byte> startBuffer = &sendBuffer[0];
memcpy(startBuffer, swon, sendBuffer->Length);
tcpStream->Write(sendBuffer, 0, sendBuffer->Length);
于 2011-06-14T12:40:33.670 回答