有c++代码如下:
char rawbytes[] = { 0x3f, 0xd2, 0x59,0xb1 } ;
int tmpInt ;
float tmpFloat ;
tmpInt = *( ( int * ) rawbytes ) ;怎样转为c#代码?
char rawbytes[] = { 0x3f, 0xd2, 0x59,0xb1 } ;
int tmpInt ;
float tmpFloat ;
tmpInt = *( ( int * ) rawbytes ) ;怎样转为c#代码?
解决方案 »
- VSTO 开发Outlook插件
- 配置文件强类型详细解析分享
- Mdi窗体问题
- WMI获取硬盘已使用时间
- 大家来看这段代码会不会导致内存无限增加??
- 求C#访问Excel的例子,这方面的帖子或者书刊请达人们多多推荐,小弟先谢谢了。
- 一个初级问题请大家帮忙解释?
- 怎样通过C#把SQL中的部分表给锁定,不让其他用户查看或修改!
- 有一个映射的驱动器Q: 映射的目录为 \\dev\test, 怎么编程根据Q:取得这个目录 \\dev\test?
- 各路大侠?哪里可以找到ActiveReports for .Net Pro版下载(1000分相赠!!!)
- 求助关于.NET的一个问题。..
- winfrom 里工具箱里怎么没有office 控件
{
byte[] rawbytes= { 0x3f, 0xd2, 0x59, 0xb1 };
int tmpInt = BitConverter.ToInt32(rawbytes, 0);
}
举一反三很有用对不对?
float tmpFloat = BitConverter.ToSingle(rawbytes, 0);
完整的c++代码如下:
char rawbytes[] = { 0x3e, 0xd2, 0x59,0xb1 } ;
int tmpInt ;
float tmpFloat ;
tmpInt = *( ( int * ) rawbytes ) ;
tmpInt = ntohl( tmpInt ) ;
tmpFloat = *( ( float * )& tmpInt ) ;其中的ntohl()我想是一个转换方法.
所有这些代码的含义是将以Float格式存放的4个字节的rawbytes[]表示成弧度数,
或已知弧度,将它表示成四个字节的rawbytes[];
比如上面的{ 0x3e, 0xd2, 0x59,0xb1 },它表示的弧度是:0.4108405411304,即N23度32分21.9秒
请问如果用c#来写这个方法怎样写?分不够再加
return (h << 24) + ((h << 16) >> 8) + ((h << 8) >> 16) + (h >> 24);
}
char rawbytes[] = { 0x3e, 0xd2, 0x59,0xb1 } ;
int tmpInt ;
float tmpFloat ;
tmpInt = *( ( int * ) rawbytes ) ;
tmpInt = ntohl( tmpInt ) ;
tmpFloat = *( ( float * )& tmpInt ) ;
所有这些代码的含义是将以Float格式存放的4个字节的rawbytes[]表示成弧度数,
比如上面的{ 0x3e, 0xd2, 0x59,0xb1 },经过上面的变化后,得到tmpFloat=0.4108405411304
请问这个变换是怎样得来的?
char rawbytes[] = { 0x3e, 0xd2, 0x59,0xb1 } ;
int tmpInt ;
float tmpFloat ;
tmpInt = *( ( int * ) rawbytes ) ;
tmpInt = ntohl( tmpInt ) ;
tmpFloat = *( ( float * )& tmpInt ) ;
所有这些代码的含义是将以Float格式存放的4个字节的rawbytes[]表示成弧度数,
比如上面的{ 0x3e, 0xd2, 0x59,0xb1 },经过上面的变化后,得到tmpFloat=0.4108405411304
请问这个变换是怎样得来的?
byte[] rawbytes = { 0x3e, 0xd2, 0x59,0xb1 } ;
Array.Reverse(rawbytes); //<---
float tempFloat = BitConverter.ToSingle(rawbytes, 0); //0.4108405411304