作者acro72 (let me think about it)
看板Visual_Basic
标题Re: [VB6 ] 数据资料转换的问题
时间Wed Nov 24 20:58:11 2010
※ 引述《acro72 (let me think about it)》之铭言:
: 因为之前用的股票软体(ezchart)没有继续提供资料了,因此想将所收集到的股价资料
: 转换成该软体的资料型式。
: 若所收集到的CVS里每一行的组成型式都是代码+名称+数字,那要如何用VB读取输出成
: 下面的资料格式?
: 代码:0050 ===>(以HEX模式看) 30(0) 30(0) 35(5) 30(0) 20 不足码,在後面补20
: 名称:加权指数 ==>(以HEX模式看) A55B(加)C576(权)ABFC(指)BCC6(数) 足码,不补20
: 数字:6250 ==>(以HEX模式看) 6A 18 00 00(6250) 不足码,在後面补00
: 注:代码要满5码(若不足则在其後补20)、名称要满8码(若不足码则在其後补20)、
: 数字部份转换成16进位後要满4码。
: 也就是说代码、名称这两个部份不需要转换,就读进来转出去,而数字部份则是要转成
: 16进位。
因为有版友说我问题问的不清楚,所以我把我的问题说的更详细一点。
------------------------------------------------------------------------------
例如原始的CSV资料格式如下:
A B C D E F G H
1 日期 代码 名称 成交比数 开 高 低 收
2 -----------------------------------------------------------------
3 991022 2315 神达 11,020,993 13.75 14.2 13.6 13.9
4 991022 2317 鸿海 16,111,879 114.5 114.5 113 114
其中代码及名称维持原始资料型式,而日期、股价及成交股数则需转换成16进位的格式。
因此一档股票(例如神达、鸿海)的资料会有40位元组,组成方式为【A】+【B】+【C】
【A】:05+代码(若代码长度不足, 代码之後补20到满),共6个位元组
如:05 32(2) 33(3) 31(1) 35(5) 20
【B】:08+ 名称(若简称长度不足, 简称之後补20到满),共9个位元组
如:08 AFAB(神) B946(达) 20 20 20 20
【C】:00+6 个32 bit unsigned long(日期+开+高+低+收+成交股数),共25个位元组
其中开、高、低、收之数字*100 成交股数/1000
如:00 2E1F0F00(991022) 5F050000(1375) 8C050000(1420)
50050000(1360) 6E500000(1390) 0D2B0000(11021)
所以上面两档股票的资料从CSV档转换成该软体的格式後,以HEX模式观看会如下所示:
05 32 33 31 35 20 08 AF AB B9 46 20 20 20 20 00
2E 1F 0F 00 5F 05 00 00 8C 05 00 00 50 05 00 00
6E 05 00 00 0D 2B 00 00 05 32 33 31 37 20 08 C2
45 AE FC 20 20 20 20 00 2E 1F 0F 00 BA 2C 00 00
BA 2C 00 00 24 2C 00 00 88 2C 00 00 F0 3E 00 00
------------------------------------------------------------------------------
所以若是想写出这样功能的程式,大概该如何下手?谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.222.90