2013-12-10 50 views
1

我無法爲此找到解決方案。我需要一個方法來將字符串和一個字節存儲在一個int值中。散列對此不好,因爲該方法應該允許en和解碼。任何提示將不勝感激,找不到合適的算法。在一個int值中存儲一個字符串和一個字節

問候

利奧Tietz

+2

以下是你可以考慮添加到您問題的幾件事情:多久是你的字符串?你的整數有多大?你是否希望在同一時間/或/在不同的時間同時使用他們? – dsign

+0

我真的很好奇這裏的用例是什麼,特別是在int只給你4個字節的情況下。世界上的什麼讓你需要這樣做? –

+0

你需要更詳細地描述你的字符串。這聽起來像某種記錄功能。如果是這樣的話,需要編碼的預定義字符串數量有限,並且您可以嘗試我的答案[here](http://stackoverflow.com/questions/17864223/how-can-i-do-printf-style-debugging-over -a-慢CAN總線與 - 恆定串/ 17868083#17868083)。如果不提供更多細節。 – Speed8ump

回答

6

一種int具有32位。該字節將佔用8位。這就讓你玩了24位 - 足夠一個半值的未壓縮的值。

除非你真的需要存儲單個字符的字符串,或者您有需要代表,你需要重新審視你的要求的字符範圍限制 - 它聽起來就像你根本將會有一個問題與您試圖編碼在一個單一的int信息量。

5

int只能存儲4個字節。所以,如果你有一個ASCII字符串,最多3個字節長,你可以將其存儲這樣

String s = ... 
byte b = ... 
int num = (s.charAt(0) << 24) + (s.charAt(1) << 16) 
     + (s.charAt(2) << 8) + (byte & 0xFF); 

編碼的無金額將讓您的信息超過32位存儲在一個int無論你如何對其進行編碼。你可以使用存儲64位的long,如果你假設每個char有7位,你可以存儲8個字符和一個字節。

相關問題