大家好,我應該將此代碼轉換為 Java 中的 C#。你能幫我一把嗎?
private static String ConvertStringToHexStringByteArray(String input) {
Encoding ebcdic = Encoding.GetEncoding("IBM037");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(input);
byte[] isoBytes = Encoding.Convert(utf8, ebcdic, utfBytes);
StringBuilder hex = new StringBuilder(isoBytes.length * 2);
foreach( byte b in isoBytes)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
我試影像這樣將它轉換為java。但結果是不同的:
private static String ConvertStringToHexStringByteArray(String input) throws UnsupportedEncodingException {
byte[] isoBytes = input.getBytes("IBM037");
StringBuilder hex = new StringBuilder(isoBytes.length * 2);
for (byte b : isoBytes) {
hex.append(String.format("x", b));
}
return hex.toString();
}
input = "X1GRUPPO 00000000726272772"
expected = "e7f1c7d9e4d7d7d64040404040f0f0f0f0f0f0f0f0f1f6f7f3f5f3f5f5f2"
result = "e7f1c7d9e4d7d7d640f0f0f0f0f0f0f0f0f7f2f6f2f7f2f7f7f2"
我究竟做錯了什么?
uj5u.com熱心網友回復:
您的代碼有效,但您正在比較兩個不同輸入字串的輸出。
當你寫expected和result并排:
e7f1c7d9e4d7d7d64040404040f0f0f0f0f0f0f0f0f1f6f7f3f5f3f5f5f2
e7f1c7d9e4d7d7d640f0f0f0f0f0f0f0f0f7f2f6f2f7f2f7f7f2
你會注意到兩者都以相同的序列 ( e7f1c7d9e4d7d7d6)開始,這似乎來自一個共同的開始X1GRUPPO
但是兩個輸出不同:
4040404040f0f0f0f0f0f0f0f0f1f6f7f3f5f3f5f5f2
40f0f0f0f0f0f0f0f0f7f2f6f2f7f2f7f7f2
根據您提供的輸入推理,第一個輸入字串的其余部分以 5 個空格開頭,后跟 "00000000167353552"
這意味著 C# 代碼的完整輸入是"X1GRUPPO 00000000167353552",這與您提供給 Java 代碼的輸入不同,然后顯然輸出不匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348139.html
上一篇:在特定時間啟動任務
