0
Python関数をJavaに変換しようとしていますが、生成された結果に問題があるようです。私のアプローチはわかりませんが、私はそれを正しく変換したと思いますが、戻り値は同じではありません。pythonトークンジェネレータをJavaに変換しようとしています
ザ・パイソンコード
def __token(d):
try:
token = 857
for k, v in d.iteritems():
n = 0
k = 'location' + k
for i in range(len(k)):
n += ord(v[i]) if i < len(v) else 0
n += ord(k[i]) if i < len(k) else 0
n = hex(n)[2:]
i = 0
for e in range(len(n)):
i += ord(n[e])
token += i
return token
except Exception:
return
Javaコード
private long token(final Map<String, String> data)
{
long token = 857;
for (final String key : data.keySet())
{
int n = 0;
final String k = "location" + key;
for (int i = 0; i < k.length(); i++)
{
n+= (i < data.get(key).length()) ? (int) data.get(key).toCharArray()[i] : 0;
n+= (i < k.length()) ? (int) k.toCharArray()[i] : 0;
}
final String subN = Integer.toHexString(n).substring(2);
int i = 0;
for (int e = 0; e < subN.length(); e++)
{
i += (int) subN.toCharArray()[e];
}
token += i;
}
return token;
私は次のようにPythonコードを実行すると:
token = str(__token({'id': 'o89jqj', 'update': '0', 'ts': '1503414000'}))
が、私は結果が得られます。
私は次のように私のJavaコードを実行する1417
:
final Map<String, String> tokenMap = new HashMap<>();
tokenMap.put("id", "o89jqj");
tokenMap.put("update", "0");
tokenMap.put("ts", "1503414000");
final String token = String.valueOf(token(tokenMap));
私は任意のヘルプは天の恵みとなり、結果
を取得します。ありがとう。
ヘックスからストリングへの提案と説明をありがとう。 – Greco