CRC does not care about sign.
Java's CRC32 gave me same result than PHP's.
public static void main(String[] args) {
String a = "Hello World!";
CRC32 crc = new CRC32();
crc.update(a.getBytes());
System.out.println(Long.toHexString(crc.getValue()));
}
Outputs: 1c291ca3
Using this online PHP CRC32 calculator gave the same CRC value than above Java code.