我有一組6位,代表了7位ASCII字符。我如何從我擁有的6位中得到正確的7位ASCII碼?只需追加一個零並執行按位或?C/C++:如何6bit的ASCII碼轉換爲位的ASCII
感謝您的幫助。
倫納特
我有一組6位,代表了7位ASCII字符。我如何從我擁有的6位中得到正確的7位ASCII碼?只需追加一個零並執行按位或?C/C++:如何6bit的ASCII碼轉換爲位的ASCII
感謝您的幫助。
倫納特
ASCII本質上是一個7位字符集,所以你有什麼不是「6位ASCII」。什麼字符組成你的字符集?最簡單的解碼方法可能是這樣的:
char From6Bit(char c6) {
// array of all 64 characters that appear in your 6-bit set
static SixBitSet[] = { 'A', 'B', ... };
return SixBitSet[ c6 ];
}
一個腳註:6位字符集是舊DEC硬件頗爲流行,其中一些,比如DEC-10,有36位架構,其中6位字符有一定意義。
嘿,也許它與標準的「Contracted ASCII」同樣是非標準的「擴展ASCII」的反義詞。 – dreamlax 2009-04-20 13:19:48
你必須告訴我們的字符的6位的設置看起來如何,我不認爲這是一個標準。
做反向映射將可能只使用一個查找表,像這樣最簡單的方法:
static const char sixToSeven[] = { ' ', 'A', 'B', ... };
這假定空間被編碼爲(二進制)000000,大寫字母A爲000001,並等等。
您索引sixToSeven
連同你的六千位人物之一,並獲得當地的7位字符回。
實際上有多個6位字符標準。 DEC已被提及。甚至最初還有一個5位字符編碼標準:http://tamilelibrary.org/teli/history1.html – 2010-01-22 21:48:11
如果我給你一個位的值,我聲稱它是從Windows XP拍攝,你可以重建整個操作系統?
你不能。你失去了信息。沒有辦法重建,除非你有一些什麼丟失的知識。如果你知道這一點,比如最重要的一點被砍掉了,那麼你可以將它設置爲零,並且你已經正確地重構了至少一半的字符。
如果你知道如何「a」和「Z」在你的6位編碼來表示,您可能能夠在通過比較它們自己的7位表示除去什麼猜測。
最近只有6位代碼,我所知道的是BASE64。這使用四個6位可打印字符來存儲三個8位值(6x4 = 8x3 = 24位)。
的6比特的值從字符得出:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/
其是通的這些63.四(比如說UGF4
)的值0用於表示3個8位值。
UGF4 = 010100 000110 000101 111000
= 01010000 01100001 01111000
= Pax
如果這是你的數據是如何編碼的,有很多周圍的片斷將告訴您如何解讀它(和許多語言有編碼器和解碼器內置的,或者在包括庫)。維基百科有一篇好文章here。
如果它是而不是 base64,那麼你需要找出編碼方案。一些較早的方案使用移入/移出(SI/SO)代碼的其他查找方法來選擇字符集內的頁面,但我認爲這對於選擇擴展(例如日本DBCS)字符而不是正常ACSII字符。
我無法想象爲什麼你會得到舊的DEC-10/20 SIXBIT,但如果這就是它,那麼只需添加32(十進制)。 SIXBIT採用以空格(32)開頭的ASCII字符,因此只需在SIXBIT字符中添加32即可獲得ASCII字符。
您需要提供更多信息。你的6位數據來自哪裏? (LabView也許?) – 2009-04-20 21:40:55