由于CRC被如此广泛地使用,我很惊讶在C中找到CRC实现很困难.
对于C,是否存在"确定的"CRC计算片段/算法,"每个人"都使用?或者:是否有一个很好的CRC实现有人可以担保,并指向我?我正在寻找特别是CRC8和CRC16实现.
想想看,我的情况可能有点不同寻常.我正在为Linux编写C代码,代码最终应该移植到微控制器上.似乎一些微控制器API确实带有CRC实现; 在任何情况下,我都在寻找一个通用的软件实现(我读到CRC最初的意思是硬件实现).
我正在尝试为S3开发蓝牙4.0应用程序.问题是,手机的行为就像它甚至没有蓝牙4.0.它不会发现4.0设备,并且无法使用4.0设备发现.我使用Broadcom-ble API在手机设置和应用程序中尝试了这两种方法.Broadcom API没有任何额外的功能来查找/发现4.0设备,而是使用常规的BluetoothAdapter功能,并声称它将在4.0手机中进行扩充,以发现4.0设备.
有人试过在S3上使用蓝牙4.0吗?有没有人成功使用Broadcom API?
提前致谢.
我希望git --no-ff在我使用时总是进行merge commit()git merge,但保留默认行为(--ff)git pull.这是可能的(配置)?
有没有办法抑制当您使用 set_active() 设置 ToggleButton 的状态时发出的“切换”信号?
我想用 GtkToggleButton 表示连接状态。由于状态可以从其他事件中更改,而不仅仅是单击按钮,我想更新状态更改信号上的按钮,但我希望不发出信号(当它发生时,我不需要运行断开连接过程)已经断开)。我可以只检查连接状态,但在信号时间前后似乎不一致。
也欢迎除 ToggleButtons 之外的其他解决方案。
谢谢
随着Windows命名管道,什么是使用正确的方法CreateNamedPipe,ConnectNamedPipe,DisconnectNamedPipe,和CloseHandle电话?
我正在制作一个连接到客户端应用程序的服务器应用程序,该客户端应用程序在会话中多次连接和断开与管道的连接。
当我写失败,因为客户端断开连接,我应该打电话DisconnectNamedPipe,CloseHandle或没有在我的把手。
然后,要接受新的连接,我应该先呼叫CreateNamedPipe,然后再呼叫ConnectNamedPipe还是ConnectNamedPipe?
我非常想解释这些调用导致我的管道处于不同状态的原因,因为在其他地方没有找到这种状态。
附加信息:
语言:使用Python win32pipe,win32file和win32api图书馆。
管道设置:等待,无重叠,字节流。
导入/使用任何python的内置库会产生线程而不会被明确询问吗?
我想用struct和uint64_t建立联合,所以我可以用结构引用单个uint16_ts,并将它们连接在uint64_t中.我做了这个测试程序:
#include "stdio.h"
#include "stdint.h"
struct test_struct{
uint16_t stuff;
uint16_t a;
uint16_t b;
uint16_t c;
};
union test_union{
struct test_struct str;
uint64_t uint;
};
int main(){
struct test_struct x = {
.stuff = 0x0000,
.a = 0x1234,
.b = 0x5678,
.c = 0x9ABC
};
union test_union y;
y.str = x;
printf("y.uint: %llX\n", y.uint);
}
Run Code Online (Sandbox Code Playgroud)
输出变为:
y.uint: 9ABC567812340000
Run Code Online (Sandbox Code Playgroud)
这对我来说是违反直觉的(它应该是0000123456789ABC,或123456789ABC).有人可以向我解释为什么结构中的元素似乎被逆转了吗?
编辑:为了将来参考:字节顺序答案让我困惑,因为,uint16_ts以正确的顺序打印.但这当然是因为他们自己存储的是小端.
我试图找到切片分配和列表的常规分配之间的性能差异.这是代码:
import time
N = 1000
a = list(range(N))
b = list(range(N))
time1 = time.time()
for i in range(N):
a = [x for x in a if x is not i]
time2 = time.time()
for i in range(N):
b[:] = [x for x in b if x is not i]
time3 = time.time()
print a
print b
print time2 - time1
print time3 - time2
Run Code Online (Sandbox Code Playgroud)
我的期望是,每个列表a和b,这一次删除一个元素,这样print a和print b两个打印空列表.相反,他们似乎总是打印起始列表,但256缺少第一个元素.
他们都打印:
[257, …Run Code Online (Sandbox Code Playgroud) 在Python中你可以做到
print (0 or None or False or "" or [] or "hello" or None or "bar")
Run Code Online (Sandbox Code Playgroud)
这将打印
hello
Run Code Online (Sandbox Code Playgroud)
你能用清单做同样的事吗?即是否有Python功能,foo以便以下也将打印hello?
print (foo([0, None, False, "", [], "hello", None, "bar"]))
Run Code Online (Sandbox Code Playgroud)
请注意,bar不打印.
它们有何不同?
我读到 SUBALIGN() 以某种方式强制进行某种对齐。还有其他区别吗?
什么时候应该使用 ALIGN(),什么时候应该使用 SUBALIGN()?
我正在制作嵌入式固件,初始化后的所有事情都发生在 ISR 中。我有它们之间共享的变量,我想知道在什么情况下它们需要是易失性的。我从不阻塞,等待另一个 ISR 的变化。
在不使用易失性的情况下,什么时候可以确定实际内存已被读取或写入?每个 ISR 一次?
附录:
这是针对 ARM Cortex-M0 的,但这实际上并不是一个关于 ISR 的问题,而是一个关于编译器优化的问题,因此,平台实际上并不重要。
python ×4
c ×3
list ×2
android ×1
bluetooth ×1
broadcom ×1
crc ×1
fast-forward ×1
galaxy ×1
gcc ×1
git ×1
git-merge ×1
gtk ×1
ld ×1
linker ×1
memory ×1
named-pipes ×1
or-operator ×1
pygtk ×1
sections ×1
signals ×1
state ×1
struct ×1
togglebutton ×1
truthiness ×1
unions ×1
volatile ×1
winapi ×1
windows ×1