我有两个CRC需要解决。多项式长度:8位,带有隐式第9位1位多项式值:0x85初始值:0x00
My first was very easy, with the following code.
byte generator = 0x85;
byte crc = 0; /* start with 0 so first byte can be 'xored' in */
foreach (byte currByte in bytes)
{
crc ^= currByte; /* XOR-in the next input byte */
for (int i = 0; i < 8; i++)
{
if ((crc & 0x80) != 0)
{
crc = (byte)((crc << 1) ^ generator);
}
else
{
crc <<= 1;
}
}
}
return crc;
但对于我的生活,我不知道5位是如何工作的。当然,发电机是0x15,但这是不工作在上面。我想也许我运行循环5次而不是8次,但这也没有得到它。
0x15多项式的CRCs示例。0x80、0x00应获得0x01的5bit crc
0x00、0x20应获得0x15的5bit crc
为了更好地理解这是如何工作的。有一个2字节的内存地址,每32字节步进一次。由于5个额外的比特从未使用过,crc就在其中。
内存地址0x0020示例
000000000000100000(0x20)
下面的建议,但没有得到结果,我应该。
byte generator = 0x15;
byte crc = 0; /* start with 0 so first byte can be 'xored' in */
foreach (byte currByte in bytes)
{
crc ^= currByte; /* XOR-in the next input byte */
for (int i = 0; i < 8; i++)
{
if ((crc & 0x80) != 0)
{
crc = (byte)((crc << 1) ^ (generator << 3));
}
else
{
crc <<= 1;
}
}
}
return (byte)(crc >>= 3);
您需要if((crc&0x20)!=0)
,并在末尾crc&=0x1f;
删除字节中向上移动的无关位。
您还需要在CRC的正确位上排他-或数据。
下面是一个C语言的例子:
#include <stddef.h>
#include <stdint.h>
uint8_t crc5(uint8_t crc, void const *mem, size_t len) {
unsigned char const *data = mem;
if (data == NULL)
return 0;
crc <<= 3;
for (size_t i = 0; i < len; i++) {
crc ^= data[i];
for (unsigned k = 0; k < 8; k++) {
crc = crc & 0x80 ? (crc << 1) ^ 0xa8 : crc << 1;
}
}
crc >>= 3;
return crc;
}
如果这个5位CRC总是在16位值的高11位上计算,那么这个示例将计算5位CRC并检查它:
#include <stdint.h>
uint16_t crc5h(uint16_t addr, int k) {
while (k--)
addr = addr & 0x8000 ? (addr << 1) ^ 0xa800 : addr << 1;
return addr >> 11;
}
当使用低五位为零且k
等于11的地址调用时,将返回要插入的五位CRC。与结果CRC独占的地址是要发送的地址。如果将该16位消息发送到CRC5H()
,且K
等于16,则所有16位都将被处理,如果接收到的消息没有错误,结果将始终为零。
该项目的目的是提供一个 Windows 和 Linux 下的应用程序,用来读写各种射频ID(RFID)标签,支持各种不同的RFID读取设备。
该程序只是为了验证 iPhone 的应用程序开发,学习 iPhone 的开发人员不妨看看。该项目主要包含 iPhone 的一些编程概念包括: MVC patterns: this application uses the Interface Builder and an MVC approach to modeling a polygon shape. Custom UIViews and Dra
定位成功后点击定位按钮,会开启持续定位功能,当位置发生改变时会定时进行位置更新并飞行到当前位置,再次点击按钮会关闭持续定位功能。若定位失败,点击时会提示“未获取到定位信息,无法开启定位服务”。 如果没有定位成功,则可按下面可能进行检查: 需要在手机设置中,位置,打开精确定位,即启动GPS。一般手机可以在顶部下拉菜单中找到GPS开关; 确保定位的时候在室外,且顶部30°角
本文向大家介绍Safari 5中的HTML5地理位置,包括了Safari 5中的HTML5地理位置的使用技巧和注意事项,需要的朋友参考一下 HTML5 Geolocation API使您可以与自己喜欢的网站共享位置。JavaScript可以捕获您的经度和纬度,可以将其发送到后端Web服务器,并可以进行精美的位置感知操作,例如查找本地商家或在映射上显示您的位置。 示例 让我们看看如何获取当前位置-
以下问题是在最近的一次微软采访中提出的 给定一个大小为 5 的未排序数组。需要多少个最小比较才能找到中位数?然后他把它扩展为n号。 根据我的说法,5个元素的解是6 这可以扩展到n个元素。如果不是,除了快速选择之外,我们如何在O(n)中的n个元素中找到中位数
问题内容: 刚刚开始进入HTML 5并测试地理位置…到目前为止为止。不过,我遇到了一些减速带…当我尝试获取地理位置时,Chrome会自动阻止页面获取我的位置。在其他站点(例如以下站点)上不会发生这种情况: 我正在使用的脚本: 我正在从计算机上的本地目录进行测试,因此实际上并没有像“http://whatever.com/mytestpage.html”这样的“域”。这就是为什么我没有得到提示吗?如