Я пишу модульные тесты для моего проекта, пытаясь проверить значение long
в шестнадцатеричном формате, используя метод Long.toHexString(l)
.
Когда я проверяю, используя long
равно 111
, я получаю значение 6f
, которое является правильным и, как я и ожидал.
Но когда long -64
, я ожидаю c0
, но вместо этого я получаю ffffffffffffffc0
.
Из чтения Java Do c я вижу, что метод ожидает длинную без знака, и если ему передано отрицательное значение, то возвращается дополнение 2s. Но как это исправить?
Я написал небольшую программу для тестирования,
@Test
public void long_to_hex() {
Long l = new Long(-64);
//Long l = new Long(111);
System.out.println(l.toHexString(l));
}