Re: [VB6 ] 數據資料轉換的問題
看板Visual_Basic作者acro72 (let me think about it)時間15年前 (2010/11/24 20:58)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):