同样是一个四字节的浮点数3A83126F
为什么在vc++中用sscanf()就能得出正确的十进制数据0.001
而在vb中用copymemory却得不到呢?郁闷,大虾来帮忙呀

解决方案 »

  1.   

    dim byts(0 to 3) as byte
    dim f as single
    dim s as string'注意字节顺序
    byts(0) = &H3A
    byts(1) = &H83
    byts(2) = &H12
    byts(2) = &H6FCopyMemory f, s(0), 4s = Format(f, "0.000")
      

  2.   

    同意楼上的,用format函数就行了
      

  3.   

    用2楼的方法换成
     s = Format(f, "0.000000000000000000000000000000000000000000000")
    得出的结果是0.000000000000000000000000000000000000010240820
    这是怎么回事呀?
      

  4.   

    我以为你的“3A83126F”是正序的
    改一下方向就行了
    dim byts(0 to 3) as byte
    dim f as single
    dim s as string'注意字节顺序
    byts(0) = &H6F
    byts(1) = &H12
    byts(2) = &H83
    byts(2) = &H3ACopyMemory f, s(0), 4s = Format(f, "0.000")
      

  5.   

    四字节的浮点数41B170A4在vc++中用sscanf转换后得出的十进制数是22.590
    但是在vb中,用了2楼的方法得出的值是0.000000000000000000000000000000000000010240820
    郁闷呀,到底是哪里出了问题呀????
      

  6.   

    既然是主机顺序就可以这样写:dim l as long
    dim f as single
    dim s as stringl = &H3A83126FCopyMemory f, s(0), 4s = Format(f, "0.000")
      

  7.   

    改了方向还是不对呀,得出的结果是0.000000000000000000000000000000000000005333072
    dim byts(0 to 3) as byte
    dim f as single
    dim s as string'注意字节顺序
    byts(0) = &H6F
    byts(1) = &H12
    byts(2) = &H83
    byts(2) = &H3ACopyMemory f, s(0), 4s = Format(f, "0.000000000000000000000000000000000000000000000")
    Debug.print s
    显示出来的结果是0.000000000000000000000000000000000000005333072
      

  8.   

    我在vc中是这样写的,
    float value;
    CString myv="3A83126F";
    sscanf(myv,"%x",&value);//将CString表示的十六进制字符串转换成十六进制数
    m_strRXData.Format("%f",value);//以浮点数的形式显示十六进制数从上面的代码中得出m_strRXData的值是0.001
      

  9.   

    谢谢zyl910(910:分儿,我又来了!) 
    用你的这个方法的出的结果是对的
    既然是主机顺序就可以这样写:dim l as long
    dim f as single
    dim s as stringl = &H3A83126FCopyMemory f, s(0), 4s = Format(f, "0.000")谢谢了
    马上给分
      

  10.   

    终于发现上面的Bug了——是数组下标问题(代码我是随手写的,键盘按错了)byts(0) = &H6F
    byts(1) = &H12
    byts(2) = &H83
    byts(3) = &H3A
      

  11.   

    Bug真的不少dim l as long
    dim f as single
    dim s as stringl = &H3A83126FCopyMemory f, l, 4s = Format(f, "0.000")