1 回答

TA貢獻1851條經驗 獲得超3個贊
顯然,您正在接收一個String
,將其char
s 轉換為它們的 Unicode 代碼值,并形成一個String
包含這些代碼值的十六進制表示形式的 a 。你要解決的問題是用字符向左填充結果,'0'
使總長度不小于八。實際上,示例代碼中與問題本身直接相關的唯一部分是
int addhex = 0;
和
System.out.println("\ nkey in Hex:" + addhex + builder.toString());
. 其他一切都只是設置。
然而,應該清楚的是,這種特定的嘗試是行不通的,因為除了所有其他考慮之外,您需要一些東西來適應數字字符串的未填充長度。該計算完全不依賴于數字字符串的長度。
由于您已經在 a 中累積了數字字符串,因此在讀出結果之前對其StringBuilder
應用所需的更改似乎是明智的。有幾種方法可以解決這個問題,但一個非常簡單的方法是一次只將一個歸零,直到達到所需的長度:insert()
while (builder.length() < 8) { builder.insert(0, '0'); // Inserts char '0' at position 0}
但是,我確實懷疑您可能錯誤地解釋了問題。執行您所要求的操作所獲得的結果是模棱兩可的:在大多數需要此類填充的情況下,有多個輸入字符串可以產生相同的輸出。因此,我傾向于猜測,真正想要的是逐字符填充與每個輸入字符對應的數字,這樣輸入“12”就會產生結果“00310032”。這是因為 Javachar
值是 16 位寬,并且它會產生可靠可逆的轉換。如果那是您真正想要的,那么您應該能夠采用我提出的方法來實現它(盡管在那種情況下有更簡單的方法)。
如果使用代碼
Long.toHexString(blabla);是不是把“0x00”的值改成“\0030”,這樣0的輸出就是30
以十六進制表示的字符“0”的 Unicode 代碼值為 30。您的轉換方法將為輸入字符串生成該值"0"
。您的方法對其輸入中的字符“\”沒有任何特殊意義。
添加回答
舉報