Я застрял на этом в течение нескольких дней и, похоже, не могу этого понять. Я надеюсь, что, разместив здесь сообщение, я получу прозрение и исправлю эту проблему через 30 секунд после публикации! : D
Здесь идет ....
Мне нужно зашифровать строку, добавить ее к моему URL и отправить на сервер. Шаги следующие:
1. Build the string (for this post, I'm using a constant TEST string)
2. Get a CRC of the string and add that to the front of the string.
3. HEX the whole string.
4. Append to URL and connect over HTTP
Я застрял на 2! CRC, который я ДОЛЖЕН получить, - 1903129755
, но среди прочих результатов я получаю -1903129756
. ПРИМЕЧАНИЕ. Для целей этого поста я использую тестовую строку и полученную в результате CRC. Строка изменится, поскольку я включаю время в миллисекундах при ее создании.
Я должен также указать, это на ежевике. Код Android работает отлично. Этот CRC взят как с Android, так и с онлайн-сайта генератора CRC:
http://hash.online-convert.com/crc32b-generator
Код, который у меня есть, похоже, работает для других, поэтому я, очевидно, здесь виноват. Может кто-нибудь заметит мою ошибку ?? Спасибо
Как видите, я пробовал несколько разных способов:
import net.rim.device.api.util.CRC32;
public long getCrcValue(String inputText)
{
int crc1 = 0,crc2=0;
long crc3=0;
crc1 = CRC32.update(CRC32.INITIAL_VALUE, inputText.getBytes());
crc2 = CRC32.update(0, inputText.getBytes());
String temp = Integer.toBinaryString(crc1);
crc3 = Long.parseLong(temp,2);
long crc4 = CRC32.update(CRC32.INITIAL_VALUE, inputText.getBytes());
long crc5 = CRC32.update(0, inputText.getBytes());
logger.log("CRC1 is: "+crc1);
logger.log("CRC2 is: "+crc2);
logger.log("CRC3 is: "+crc3);
logger.log("CRC4 is: "+crc4);
logger.log("CRC5 is: "+crc5);
return crc1;
}
PS logger
- это мой собственный класс для вывода настроенных отформатированных выводов на консоль, поэтому игнорируйте его.
РЕДАКТИРОВАТЬ: Говоря о выводах, вот что такое вывод:
CRC1 is: -1903129756
CRC2 is: -460833676
CRC3 is: 2391837540
CRC4 is: -1903129756
CRC5 is: -460833676
EDIT2: вот эквивалентный код Android.
Примечание crc
определяется как CRC32 crc
:
public long getCrcValue(String inputText)
{
crc.reset();
crc.update(inputText.getBytes());
return crc.getValue();
}