2013-10-07 73 views
0

我想將長整型值轉換爲類似於此計算器中的char序列here 我真的不知道該值如何轉換爲ASCII序列(或者它甚至是否正確) 。我認爲ASCII值是8位長,所以這意味着我必須將長整型值轉換爲二進制值,然後將其分成8位塊,這是否正確?java將長整型值轉換爲char序列

+0

你試圖找到該網頁上的ASCII區段的等效?你有什麼嘗試? –

回答

3

嚴格,ASCII字符是7位長,我們通常只是添加一個額外的0至開頭,以獲得8位。 ASCII擴展(如ISO 8859)具有8位長字符。您鏈接的計算器似乎正在使用其中一個擴展。

在Java中,多頭有64位(和那些位中的一個用於標誌),所以你的確可以有8塊的8位長的字符。

首先,你必須要convert your long to a byte array(並不是所有的問題都與這種情況有關,但其中的一部分是 - 特別是提到ByteBuffer的部分)。

byte[] bytes = ByteBuffer.allocate(8).putLong(someLong).array(); 

一旦你有了數組,使用簡單的轉換將每個字節轉換爲字符。

編輯:而不是手動轉換每個字符,您可以使用java.lang.String(byte[])構造函數。

String str = new String(bytes); 

請注意,這將使用平臺的默認字符集。如果這是不可取的,你可以使用其中一個構造函數,也採用字符集。

+1

您可以簡單地使用接受'byte []''的String構造函數。 –

+0

@SotiriosDelimanolis噢,我忘了那個。這更容易使用。 – luiscubal

+0

我試過你的方法,並能正常工作至今遺憾的是,我還會收到一些懸而未決的字符(菱形帶有問號顯示)...你的意思是用'你可以使用constructors'之一呢?有沒有擴展字符集的方法? – wasp256

0

都能跟得上。有幾種方法可以做到這一點。一種方法是使用java.math.BigInteger,它有一個名爲toByteArray()的方法。如果它適合您的問題,請嘗試。