营业部代码换码算法示例
源代码 来自 上海证券交易所技术文档,新一代交易系统 市场参与者 接口规格说明书(1.08版),附录7。我添加了测试代码,便于理解。
1 #include "stdafx.h" 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <Windows.h> 5 6 BOOL branchid2ReffPrefix(char *branchid, char *reff) 7 { 8 int x, m, n, p, q; 9 char temp[2]; 10 x = atoi(branchid); 11 12 if (x<1000 || x>4843) return FALSE; 13 14 m = (x - 1000) / 62; 15 n = (x - 1000) % 62; 16 17 if (m >= 0 && m <= 9) p = m + 48; 18 else if (m >= 10 && m <= 35) p = m + 55; 19 else if (m >= 36 && m <= 61) p = m + 61; 20 21 if (n >= 0 && n <= 9) q = n + 48; 22 else if (n >= 10 && n <= 35) q = n + 55; 23 else if (n >= 36 && n <= 61) q = n + 61; 24 25 temp[0] = p; 26 temp[1] = q; 27 memcpy(reff, temp, 2); 28 29 return TRUE; 30 } 31 32 BOOL reffPrefix2Branchid(char *reff, char *branchid) 33 { 34 int x = 0, m = 0, n = 0, p = 0, q = 0; 35 p = *reff; 36 q = *(reff + 1); 37 38 if (p >= 97 && p <= 122) m = p - 61; 39 else if (p >= 65 && p <= 90) m = p - 55; 40 else if (p >= 48 && p <= 57) m = p - 48; 41 42 if (q >= 97 && q <= 122) n = q - 61; 43 else if (q >= 65 && q <= 90) n = q - 55; 44 else if (q >= 48 && q <= 57) n = q - 48; 45 46 if (m == 0 || n == 0) return 2; 47 x = m * 62 + n + 1000; 48 49 printf(branchid, "%d", x); 50 51 return TRUE; 52 } 53 54 int _tmain(int argc, _TCHAR* argv[]) 55 { 56 char* branchid_test = { "1234" }; 57 char* reff_test = new char[4]; // 动态分配内存 58 59 branchid2ReffPrefix(branchid_test, reff_test); 60 reffPrefix2Branchid(reff_test, branchid_test); 61 62 return 0; 63 }

浙公网安备 33010602011771号