2012-11-16 18 views
1

我希望這個問題不會產生一些模糊性。其實我正在研究RFID項目,我正在使用被動標籤。這些標籤只存儲4個字節的數據,32位。我試圖在Tag的數據庫中存儲更多的字符串信息。我搜索了互聯網上的字符串壓縮算法,但我沒有找到任何適合的。有人請指導我解決這個問題。如何在這個4字節的數據庫中保存更多的數據,我是否應該使用其他策略來存儲,如果是的話,那麼是什麼?此外,我在手持式Window CE設備上使用C#。在4字節內存中存儲16字節的字符串數組,(壓縮)在RFID標籤

,我會很感激,如果有人可以幫助我...

+2

顯然沒有壓縮可以將任意16字節值減少到4字節值。 – CodesInChaos

+0

感謝這些有價值的答案。我只需要維護一個關於正在被寫入標籤數據庫的數據的字典。 – moonzai

+0

這是評論一個問題或答案?您可以使用Dictionary Int32,但不是壓縮。什麼是數據銀行? – Paparazzi

回答

0

壓縮方案無法保證如此高的壓縮比。

我能想到的具有32位的唯一方法是存儲在32位的int,構建本地/遠程URL出來的,它指向的實際數據。

您還可以使stored value指向設備上的本地查找表中的條目。

+1

壓縮方案不能保證任何壓縮比都比任意數據的身份變換更好。 – CodesInChaos

0

顯然沒有壓縮可以將任意16字節值減少到4字節值。這在數學上是不可能的,請查看Pidgeonhole principle瞭解詳情。

將實際數據存儲在某種數據庫中。讓4個字節編碼一個整數,作爲您想要參考的行的關鍵字。例如,通過使用自動遞增主鍵或數組中的索引。最多可處理40億行。

0

如果您的字符串少於2^32,只需枚舉它們,然後將字符串索引(在您的「字典」中)保存在4字節的「數據庫」中。

0

除非您對字符串格式有很多瞭解,否則不可能這樣做。這從pigeonhole principle中可以明顯看出:理論上有2^128個不同的16字節字符串,但只有2^32個不同的值可供選擇。

換句話說,沒有壓縮算法可以保證可能的輸入集中的任意字符串映射到輸出集中的4字節值。

它可能設計出一種算法,這將在您的特定情況下工作,但除非你的數據集是充分抑制(在79,228,162,514,264,337,593,543,950,336可能的字符串至多1可能是有效的)具有有意義的結構,那麼你唯一的選擇是在外部存儲一些映射。

+0

好吧,如果我使用外部映射,保存我的字符串在數據庫中,並在標記的數據庫中的特定字符串的ID。但標籤有其獨特的ID,我可以使用標籤的ID進行外部映射。我想利用這個4字節的內存。我在考慮在這個數據庫中放置一些信息,例如資產ID +資產描述(資產就是這個標籤將被扣緊的那個容器或某個盒子)。這將有助於他人用RFID閱讀器查詢箱子。 – moonzai

1

這取決於你的標籤,例如外星標籤http://www.alientechnology.com/docs/products/Alien-Technology-Higgs-3-ALN-9662-Short.pdf,有EPC內存,我認爲你使用你的EPC內存,但你也可以在你的標籤中使用用戶內存。您不必壓縮任何內容,只需使用用戶內存即可。此外,從技術上講,我寧願不將許多數據保存在我的標籤上,我使用自己的32位編碼並將其與我的軟件上的更多數據關聯(映射),並將我的數據保存在硬盤上。它也更安全。

+0

是的,我使用的是外星人標籤,有EPC和用戶回憶。我正在將數據寫入用戶內存,這是4個字節,現在我將遵循你的技術。 thanx的幫助.... – moonzai

+0

你的歡迎夥伴 – Soheil

相關問題