我有一個字符串,我想編碼成長的Java;我也想從長久以來將其解碼爲一個字符串。重要的是它是一個「長」(原始)而不是一個長(對象)。字符串最大長度爲128個字符,但通常要小得多。字符串的字符以ASCII編碼,只使用標準ASCII值(0-127)而不使用擴展ASCII碼(0-256)。Java編碼/解碼字符串長/長
我能夠通過將每個字符轉換爲長(8字節)的每個字節來編碼長度爲8的字符串。由於每個字符的範圍是0-127(7位),我相信我可以編碼長達9個字符(64位/ 7位= 9.14),但我還沒有實現它。
我有一種感覺,它可能是不可能的(編碼所有128個字符),但我想打開這個問題,看看是否有更好的技術。
如果128個字符是不可能的,那麼您可以編碼成長字符的最大字符數是多少?
P.S.我也研究過一些哈希算法,但它似乎不能解決問題的解碼要求。
這是壓縮問題嗎?您正在嘗試將896(128 * 7)位合併到64位中?壓縮只能做很多事情,尤其是對於這麼小的輸入。如果我正確地理解了你,你實際上說你想要代表每位2個字符。這聽起來很牽強。 –
@RyanStewart我同意這聽起來很牽強(我甚至在我的問題中使用了不可能的詞),但我希望得到SO世界的共識。我還有另一種選擇,我不知道。 – Justin
除了不會做太多的壓縮算法,如果這是人類可讀的,我可以看到一種可能性,即需要更少的數據......可能是雙倍或四倍的存儲......通過丟棄一兩個最重要的然後做一些字典匹配。 – sdanzig