首页 新闻 会员 周边 捐助

c#如何写通达信日下线数据

0
[待解决问题]

 以深发展1997年1月2日的数据为例: 
* 00000000h: 36 B8 30 01 72 06 00 00 86 06 00 00 60 06 00 00 ; 
* 00000010h: 72 06 00 00 77 69 D4 4C 68 FE 66 00 74 06 00 00 ; 
* 以下是分解 00000000h:|36 B8 30 01|72 06 00 00|86 06 00 00|60 06 00 00|; 
* [36 B8 30 01] = * 0x0130B836 = 19970102 日期[unsigned long] 
* [72 06 00 00] = 0x00000672 = 1650/100 = 16.50 开盘[unsigned long] 
* [86 06 00 00] = 0x00000686 = 1670/100 = 16.70 最高[unsigned long] 
* [60 06 00 00] = 0x00000660 = 1632/100 = 16.32 最低[unsigned long] 
* 00000010h:|72 06 00 00|77 69 D4 4C|68 FE 66 00|74 06 00 00|; 
* [72 06 00 00] = 0x00000672 = 1650/100 = 16.50 收盘[unsigned long] 
* [77 69 D4 4C] = 0x4CD46977 = 111365048.0 成交额[float] 
* [68 FE 66 00] = 0x0066FE68 = 6749800 成交量[unsigned long] 

 

想请大神 如何处理[77 69 D4 4C] = 0x4CD46977 = 111365048.0 成交额[float]  这个始终无法理解 

尼古拉斯saken的主页 尼古拉斯saken | 菜鸟二级 | 园豆:202
提问于:2015-08-24 20:51
< >
分享
所有回答(1)
0
Launcher | 园豆:45050 (高人七级) | 2015-08-25 09:07

文章还是没太明白为什么有大小端模式,就是说如果一个32位的CPU要表示16位的short数字的时候,那么这个数字的高8位放在32位CPU的哪个字节的问题?如果是这样,我不明白为什么会出现这个问题?规定一个不就行了么?比如说必须是大端模式(或者必须是小端模式),这是因为各个CPU的实现不同造成的么?

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2015-08-25 09:39

@顾晓北: 不是,是没有从硬件上限制,也没法限制如何将一个“整体”的“多个部分”映射到寄存器上,那么如何存储,需要实现方用一定的“协议”来保证,比如我们现在看到的大端小端模式。可以用 SOCKET 编写 TCP 程序为例,如果你想实现消息交互,你必须在 TCP 之上实现“协议”(比如 HTTP、 FTP)来保证你的消息的完整性,因为 TCP 没有,也不可能保证“消息”的多个部分“同时”到达接收端。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-08-25 09:57

@Launcher: 能举一个比较贴近生活的例子么?呵呵

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2015-08-25 09:59

@顾晓北: 英联邦汽车靠左行,中国汽车靠右行。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-08-25 10:16

@Launcher: 那你意思还是不同CPU厂商的实现不同造成的么?

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2015-08-25 10:23

@顾晓北: CPU 实现不同,OS 实现不同,编译器实现不同,应用实现不同。按照这个顺序,上一层总能屏蔽下一层的不同,但是绝大多数程序员都没这么做。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-08-25 10:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册