我很久以前就解決了這個問題的八度/ matlab,現在我需要一些C#。 任務是將兩個八度結構合併爲一個。我發現沒有合併工具,也沒有合適的序列化程序,所以我必須考慮一些事情。
最重要的概念決定是將結構樹分成具有完整路徑和假期內容的行。
基本思想是
- 序列化結構來行,其中每一行代表一個基本變量(矩陣,串,浮點,...)
- 結構的陣列或矩陣將具有路徑中的索引。
- 將兩者連接起來生成的文本文件,排序行
- 檢測碰撞並做碰撞處理(很容易,因爲相同的屬性將被直接理解過程相互分揀線後定位)
- 做反序列化
實施例:
>> s1
S1 =
包含字段的標量結構:
b =
2x2 struct array containing the fields:
bruch
t = Textstring
f = 3.1416
s =
scalar structure containing the fields:
a = 3
b = 4
將被序列到
root.b(1,1).bruch=txt2base('isfloat|[ [ 0, 4 ] ; [ 1, 0 ] ; ]');
root.b(1,2).bruch=txt2base('isfloat|[ [ 1, 6 ] ; [ 1, 0 ] ; ]');
root.b(2,1).bruch=txt2base('isfloat|[ [ 2, 7 ] ; [ 1, 0 ] ; ]');
root.b(2,2).bruch=txt2base('isfloat|[ [ 7 ] ; [ 1 ] ; ]');
root.f=txt2base('isfloat|[3.1416]');
root.s.a=txt2base('isfloat|[3]');
root.s.b=txt2base('isfloat|[4]');
root.t=txt2base('ischar|Textstring');
這種方法的優點是,這是很容易實現的,它是人類可讀的。首先你必須編寫兩個函數base2txt和txt2base,將基本類型轉換爲字符串並返回。然後,您只需遞歸遍歷樹,併爲每個struct屬性寫入屬性的路徑(此處由「。」分隔),並將內容寫入一行。
最大的缺點是,至少我的這個實現是非常緩慢的。
對第二個問題的回答:這裏有沒有這樣的東西?我不知道......但我搜索了一段時間,所以我不這麼認爲。
這裏使用UUID可能是一個好主意。不一定是128位的ID,你也可以使用哈希(用戶名)+串行或類似的東西。 – ordnungswidrig 2011-01-28 08:31:42