C# 字节流中的双值传输

C# 字节流中的双值传输,c#,c++,arrays,double,C#,C++,Arrays,Double,C++ 但是这里出了点问题,myval也是一个很小的值,而rount的值总是0 问题是:我的错误在哪里,我可以在cout中看到有效值,我发送了10个字节,出了什么问题?问题是您只发送了10个字节。double是八个字节,加上三个字节的头,这意味着您应该发送11个字节 如果您调整字节数组并发送正确的长度,它应该可以工作。您不是将双字节复制到数组边界之外吗?听起来像是endianness差异(大endian与小endian)BitConverter使用CPU端,因此您可能必须反转数据块。我最近在上面

C++

但是这里出了点问题,myval也是一个很小的值,而rount的值总是0


问题是:我的错误在哪里,我可以在cout中看到有效值,我发送了10个字节,出了什么问题?

问题是您只发送了10个字节。double是八个字节,加上三个字节的头,这意味着您应该发送11个字节


如果您调整
字节
数组并发送正确的长度,它应该可以工作。

您不是将
双字节
复制到数组边界之外吗?听起来像是endianness差异(大endian与小endian)
BitConverter
使用CPU端,因此您可能必须反转数据块。我最近在上面贴了一些答案。。。试试:(很明显,您需要将double扩展到8字节)这就是我只发送10字节的错误
unsigned char lbytes[] = { 0x0A, 0x01, 0x02 };
unsigned char bytes[10];

double dbl = sin((double)i) * 10; 

i+=5; if (i == 360) i = 0;

memcpy(&bytes, &lbytes, 3);
cout << dbl << endl;
memcpy(&bytes[3], &dbl, sizeof(double));
switch (m[1]) {
    case 0x01: {
        if (m.Length > 5) {
            double myval = Math.Round( BitConverter.ToDouble(m, 3), 2 );