|
@@ -74,8 +74,8 @@ final class CRC {
|
|
0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
|
|
0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
|
|
0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040]
|
|
0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040]
|
|
|
|
|
|
- func crc32(message:[UInt8]) -> UInt32 {
|
|
|
|
- var crc:UInt32 = 0xffffffff
|
|
|
|
|
|
+ func crc32(message:[UInt8], seed: UInt32? = nil) -> UInt32 {
|
|
|
|
+ var crc:UInt32 = seed != nil ? seed! : 0xffffffff
|
|
|
|
|
|
for chunk in BytesSequence(chunkSize: 256, data: message) {
|
|
for chunk in BytesSequence(chunkSize: 256, data: message) {
|
|
for b in chunk {
|
|
for b in chunk {
|
|
@@ -86,8 +86,8 @@ final class CRC {
|
|
return crc ^ 0xffffffff
|
|
return crc ^ 0xffffffff
|
|
}
|
|
}
|
|
|
|
|
|
- func crc16(message:[UInt8]) -> UInt16 {
|
|
|
|
- var crc:UInt16 = 0x0000
|
|
|
|
|
|
+ func crc16(message:[UInt8], seed: UInt16? = nil) -> UInt16 {
|
|
|
|
+ var crc:UInt16 = seed != nil ? seed! : 0x0000
|
|
for chunk in BytesSequence(chunkSize: 256, data: message) {
|
|
for chunk in BytesSequence(chunkSize: 256, data: message) {
|
|
for b in chunk {
|
|
for b in chunk {
|
|
crc = (crc >> 8) ^ CRC.table16[Int((crc ^ UInt16(b)) & 0xFF)]
|
|
crc = (crc >> 8) ^ CRC.table16[Int((crc ^ UInt16(b)) & 0xFF)]
|