字节流中的双值传输

时间:2012-10-30 11:15:33

标签: c# c++ double bytearray

C ++

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));

C#

switch (m[1]) {
    case 0x01: {
        if (m.Length > 5) {
            double myval = Math.Round( BitConverter.ToDouble(m, 3), 2 );

但是这里出了点问题,myval也是一个非常小的值,并且rount总是为0.

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

1 个答案:

答案 0 :(得分:1)

问题是您只发送十个字节。 double是 8 字节,加上你的三个字节的标题,这意味着你应该发送11个字节。

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