2012-03-05 308 views
-1

我有一個字符串,其中包含一個SREC文件的內容。在SREC文件中,每2個字符是一個字節(在這種情況下,這是一個指令)。將字符串[]轉換爲字節[] 2個字符轉換爲字節?

如果我把字符串轉換成一個字符串數組,然後將該字符串數組的一個元素轉換爲一個字節(至少我認爲這就是我在做的),它仍然將每個字符的字符分隔成一個字節...我如何解決這個問題?

實施例1:

String[] myFile = new String[]{"s1", "my", "na", "me","is"}; 
try 
{ 
    byte[] byteArray = myFile[1].getBytes("UTF-16LE"); 
    System.out.println(java.util.Arrays.toString(byteArray)); 
} 

結果: [109,0,121,0]

+0

每兩個字符怎麼可能是一個字節?你的意思是每個字符都是兩個字節嗎? – Taymon 2012-03-05 16:47:46

+0

你的問題不清楚。 「每2個字符是一個字節」是什麼意思?在附註中,您的輸出是字符串「my」('myFile [1]')的UTF-16表示形式,Java中的「char」是一個單一的16位Unicode字符,它具有最小值的'\ u0000'(或0)和最大值'\ uffff'(或包括65,535)。「_([link](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes的.html))。 – 2012-03-05 16:49:46

+0

'UTF-16LE'會將每個字符轉換爲兩個字節。 – 2012-03-05 16:53:39

回答

1

你指定UTF-16LE作爲編碼。這將始終爲每個Java使用2個字節char。如果您不想使用每個字符2個字節,請不要使用UTF-16 ...

如果兩個字符在SREC文件中由單個字節表示,那麼您需要有某種映射從StringByte - 有2個可能的2個字符的字符串,但只有256個可能的字節。假設這是一個固定映射,您可能只想硬編碼Map<String, Byte>,並從地圖中獲取值。

(如果值是真的只是十六進制,你可以使用現有的十六進制代碼解析 - 但沒有你給樣品字符串是一個有效的對十六進制數字)

+0

好的,我應該使用什麼? – BigBug 2012-03-05 16:48:30

+0

@BlueMonster:我們不知道字符串是如何映射到SREC文件中的字節的。你甚至沒有告訴我們SREC是什麼。你有一個可以鏈接到的規範嗎? – 2012-03-05 16:51:10

+0

SREC並不重要,重要的部分是我正在從文件中讀取某些內容到字符串中...並且從該字符串開始,每個2個字符都是一條指令,而且我需要每個2個字符都是一個字節... – BigBug 2012-03-05 16:52:57

1

SREC轉換成字節十六進制編碼數字。

http://en.wikipedia.org/wiki/SREC_%28file_format%29

這是你看起來是試圖做相反的事情。

好的,我應該使用什麼?

編寫一個循環,其中一個字符串的每個字節都轉換成等效的十六進制。有無數的例子可用。

+0

我需要操縱我的程序中的一些東西,並將它發送回另一個不再使用srec文件的方法......我只需要每讀入兩個字符就可以轉換成一個字節... – BigBug 2012-03-05 16:50:53

+0

你能添加一個你想對問題做什麼映射的例子,因爲沒有這樣做的標準方法? (而不是指SREC完全不同) – 2012-03-05 16:52:56

+0

我懷疑你的實際需求是遵循SREC規範並將每個字符轉換爲兩個字節(以十六進制表示)。 – 2012-03-05 16:57:32