- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用以下 C 算法计算数据的 CRC32:
#define CRC32_POLYNOM_REVERSED 0xEDB88320
uint32 calcCrc32(uint8* buffer, uint32 bufferSize) {
return accumulateCrc32(0, buffer, bufferSize);
}
uint32 accumulateCrc32(uint32 accumulatedCrc32, uint8* buffer, uint32 bufferSize) {
uint32 i, j;
uint32 crc, mask;
crc = accumulatedCrc32 ^ 0xFFFFFFFF;
for (i = 0; i < bufferSize; i++) {
crc ^= buffer[i];
for (j = 8; j > 0; j--) {
mask = -(crc & 1);
crc = (crc >> 1) ^ (CRC32_POLYNOM_REVERSED & mask);
}
}
return crc ^ 0xFFFFFFFF;
}
当我将它应用于任何数据并将生成的 4 个字节的 CRC32 连接到数据并再次通过该例程运行它时,它总是以结果结束
crc32 = 0x2144DF1C
有人知道为什么会这样吗?
câu trả lời hay nhất
这是 CRC 的数学属性。如果将没有预处理或后处理的“纯”CRC 附加到消息中,那么整个事物的 CRC 将始终为零。事实上,这简化了在硬件中使用 CRC 校验消息的检查,因为您可以通过 CRC 寄存器运行整个消息和 CRC,并检查最后的结果是否为零。
在CRC的数学中,可以考虑一个除法运算,被除数是消息,除数是CRC多项式,除法的余数是CRC。如果将 CRC 附加到消息,它实际上是在减去余数。然后,当您将该 消息除以多项式时,您得到的余数为零。在整数领域,137 % 7 == 4。我从 137 中减去 4,得到 133。然后 133 % 7 == 0。
在这种情况下,有预处理和后处理(^ 0xFFFFFFFF
)。那么结果不是零,而是一个不同的常量。该常量只是消息“00 00 00 00”的 CRC。
关于已经 CRC32 处理的数据的 CRC32 附加了 CRC 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591991/
Câu hỏi dành cho người mới bắt đầu về Android. OK, tôi đã ghi thành công vào tập tin. Ví dụ. //Lấy tên file String filename = getResources().getString(R.string.filename
Tôi đã lưu cùng một hình ảnh vào /data/data/mypackage/img/ và bây giờ tôi muốn hiển thị toàn màn hình này, tôi đã thử sử dụng ACTION_VIEW để hiển thị chương trình tiêu chuẩn Android nhưng nó không đến từ /data/dat
Tôi đang sử dụng Xcode 9, Swift 4. Tôi đang cố gắng hiển thị hình ảnh trong ImageView từ một URL bằng mã sau: func getImageFromUrl(sourceUrl: String) -> UII
Tôi gặp sự cố khi cài đặt genymotion trên Ubuntu của mình. Chủ yếu là tôi không thể gỡ lỗi cơ sở dữ liệu của mình vì tôi không thể xem nội dung của thư mục /data/ thông qua DBMS trong Eclipse và adb trong shell. Không hiển thị
Tôi đang cố gắng đăng một số dữ liệu JSON bằng PHP. Nhưng đã xảy ra sự cố. Đây là html của tôi -- {% for x in sets %}
Tôi quan sát thấy kết quả khác nhau giữa hai phương pháp. Tại sao lại thế này? Tôi biết chuyện gì đang xảy ra trên lm nhưng không thể hiểu chuyện gì đang xảy ra trên tslm. > thư viện(dự báo) > set.seed(2) > tts lm(t
Tôi không chắc tại sao điều này lại xảy ra! Tôi có một lớp được sử dụng bởi spring data elasticsearch và spring data jpa, nhưng khi tôi thử chạy ứng dụng của mình thì tôi gặp lỗi. Đã tạo lỗi
Trong sơ đồ thuần chay này, nếu tôi tải xuống và chuyển đổi Flare-dependency.json bằng cách sử dụng lệnh jq thành csv sau, jq -r '(map(keys) | add | Unique) as
Tôi đang gửi một dự án trong đó tôi phải tạo cơ sở dữ liệu mysql bằng các bảng. Mọi thứ đều đang diễn ra từ phía tôi, vì vậy tôi chỉ muốn kiểm tra cách gửi tất cả các tệp zip của mình cho một người nào đó bằng một máy tính khác. Về cơ bản, làm cách nào để tạo tệp cơ sở dữ liệu của tôi cho một máy tính khác,
Tôi có một ứng dụng ghi tệp văn bản vào bộ nhớ trong. Tôi muốn nhìn kỹ hơn vào máy tính của tôi. Tôi đã chạy Toast.makeText để hiển thị đường dẫn và nó báo:/data/data/my-bundles nhưng khi tôi truy cập An của Android Studio
Tôi thích tốc độ tải Android bằng trình giả lập Genymotion. Nó có tốc độ rất tốt, nhưng vẫn có một số hiệu suất yếu. Cách truy cập trình giả lập Genymotion từ File Explorer trong Eclipse
Tôi cần thay đổi định dạng của hộp văn bản trong Silverlight. Dữ liệu được ràng buộc thông qua MVVM. Ví dụ: có thuộc tính int, tôi thêm 1 vào giá trị trong setter và gọi OnPropertyChanged
Tôi muốn gửi yêu cầu tới API dữ liệu Youtube nhưng tôi không cần truy cập bất kỳ thông tin người dùng nào. Tôi chỉ muốn duyệt các video công khai và hiển thị video dựa trên cụm từ tìm kiếm. Tôi có thể làm điều này mà không được phép không? Câu trả lời hay nhất YouTube
Tôi đã thiết lập ứng dụng Twilio và tôi muốn gửi thông tin cập nhật cho mọi người nhưng tôi không muốn trả lời từng tin nhắn riêng lẻ. Tôi chỉ muốn họ gọi nếu họ có câu hỏi. Tôi thấy mọi thứ đều hoạt động tốt nhưng tôi muốn hiển thị văn bản đến khi gửi để đảm bảo rằng tôi không bỏ sót bất kỳ câu hỏi nào. Tôi đang sử dụng p
Tôi có một trang web có biểu mẫu (hiện tại nó là HTML đơn giản, nhưng chúng tôi đang chuyển sang JQuery). Quá trình này như sau: chấp nhận đầu vào của người dùng --- 5 số nguyên, gọi dịch vụ mạng thông qua REST, chạy một số phép tính ở phía máy chủ... và tạo ra một
Giả sử chúng ta có một tệp có tên là configure.js, khi nhìn vào bên trong chúng ta thấy: 'use strict'; var profile = { "project": "%Projec
Phần này là phần mở rộng của Câu hỏi trước: Bây giờ tôi có thể trả về thành công dữ liệu JSON từ Bộ điều khiển CI của mình, dữ liệu này trả về: {"results":[{"id://1","Sourc
Có cách nào hiệu quả để xóa tất cả lưu trữ tài liệu của CBL trong ios không? Tôi có một câu hỏi về vấn đề này hoặc nếu có ai biết cách làm cho ứng dụng hoạt động giống như vừa được cài đặt thì điều đó cũng sẽ thực sự hữu ích. Chúng tôi đang nỗ lực đảm bảo rằng việc đăng xuất của chúng tôi thực sự đặt ứng dụng vào
Tôi có ứng dụng Rails giao tiếp với các ứng dụng Rails khác để chèn dữ liệu. Tôi đang sử dụng phương thức jQuery $.post để chèn dữ liệu. Để chèn, các ứng dụng Rails khác của tôi hiển thị 200 OK. Nhưng trong
Tôi đang chạy thử nghiệm đơn vị cho lệnh gọi API phục vụ yêu cầu đăng bài. Tôi đang chuyển nội dung yêu cầu và phải trả lại phản hồi dưới dạng dữ liệu tài khoản. Nhưng tôi chỉ nhận được lỗi xác nhận Lưu ý: Dữ liệu được tìm nạp từ Azure spec.js const accou
Tôi là một lập trình viên xuất sắc, rất giỏi!