📄 subject_58099.htm
字号:
<p>
序号:58099 发表者:狂战士 发表日期:2003-10-30 09:07:07
<br>主题:又碰到数据转化的问题了!!(在线等解答)
<br>内容:一串十六进制数01 10 34 00 00 00 24 00 00 00 04 00 00 00 00 00 00 00 03 00 F9<BR>它实际表示的数字是67,66,64,0,它的具体格式是这样的01为开始位,10是数据长度,34 00 00 00 24 00 00 00 04 00 00 00 00 00 00 00是具体数据,他们各占四个字节,03是结束位,00 F9是校验位.,请大侠看看它是如何转化的!!!<BR>我自己写了,可是转化有问题,我写的代码如下:<BR>unsigned char str[]={0x01,0x10,0x34,0x00,0x00,<BR>0x00,0x24,0x00,0x00,0x00,0x04,0x00,0x00,0x00,<BR>0x00,0x00,0x00,0x00,0x03,0x00,0xF9};<BR> double num1=(double)(*(str+1));<BR> double num2=(double)(*(str+6));<BR> double num3=(double)(*(str+10));<BR> double num4=(double)(*(str+14));<BR> m_MSG1.Format("具体数据是:%0.2f %0.2f %0.2f %0.2f",num1,num2,num3,num4);
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-10-30 09:17:44
<br>内容:数据起始位不是应该从str+2开始吗?<BR>前面两个不分别是开始位和长度吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:走上vc的路 回复日期:2003-10-30 09:38:59
<br>内容:你应该这样写:<BR> double *data = (double*)(str+2)<BR> double num1= *data++;<BR> double num2=*data++;<BR> double num3=*data++<BR> double num4=*data++;<BR> <BR><BR><BR>你上面的写法是错误的。str是unsigned char所以你取得的是unsigned char,只有一个字节,然后去转化成double,这显然不对!<BR> <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-10-30 10:49:09
<br>内容:To:走上vc的路<BR>按照你所说的方法,我无法得到我需要的数字, 结果为0.00 0.00<BR>To:xiongli<BR>按照你所说的方法,我得到的数字是52.00 36.00 4.00 0.00
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-10-30 11:05:03
<br>内容:用int型转化!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-10-30 11:09:05
<br>内容:TO:米罗<BR>好象还是不行啊!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-10-30 11:26:47
<br>内容:我这没c++,所以我不能调。<BR>double型的是8个字节,所以得的数是不对的,int是4个字节,应该是没错。<BR><BR>int *data = (int*)(str+2)<BR>double num1= *data++;<BR>double num2=*data++;<BR>double num3=*data++<BR>double num4=*data++;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:米罗 回复日期:2003-10-30 11:32:03
<br>内容:结果应该是52.00 36.00 4.00 0.00
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:狂战士 回复日期:2003-10-30 11:40:37
<br>内容:可是得到的结果应该是67,66,64,0
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:苗秦 回复日期:2003-10-30 12:33:41
<br>内容:这是一种低位在前高位在后的存储方式<BR>如下可得到数据:<BR>CString str;<BR> unsigned char str1[]={0x01,0x10,0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x04,0x00,0x00,0x00,<BR>0x00,0x00,0x00,0x00,0x03,0x00,0xF9};<BR> unsigned char a,b,c;<BR> for(int i=2;i<14;i++)<BR> {<BR> c=str1[i];<BR> <BR> a=c<<4;<BR> b=c>>4;<BR> str1[i]=a |b;<BR> }<BR> <BR> int *data = (int*)(str1+2);<BR> int num1= *data++;<BR> int num2=*data++;<BR> int num3=*data++;<BR> int num4=*data++;<BR> str.Format("%d,%d,%d,%d",num1,num2,num3,num4);<BR> MessageBox(str);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:苗秦 回复日期:2003-10-30 12:36:13
<br>内容:得到的结果如下图所示
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:苗秦 回复日期:2003-10-30 12:37:40
<br>内容:得到的结果如下图所示
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -