我有这个函数将int *作为参数并将其第n位更改为1或0 :
df = pd.DataFrame({'EmployeeID':[random.sample(range(123456,135000),100)]})
我可以保证它的工作原理可能是类型:
或者我应该为每种数据类型创建一个函数吗?
答案 0 :(得分:3)
你不能使用单一功能,你需要多个功能。
否则,访问(*value)
,它是一个指向uint8_t
对象的整数指针,即
// This code is broken
unit8_t val = 0xC4;
change_nth_bit((int*)&val, 3, 1);
// ^^^^^^
// |
// Invalid ------+
会导致未定义的行为。
请注意,如果将此代码放在宏中(在用宏参数引用替换指针之后),您应该能够在不重复代码的情况下获得所需的结果:
#define CHANGE_NTH_BIT(v,b,n) (v) ^= (-(b) ^ (v)) & (1U << (n))
答案 1 :(得分:1)
假设指针为安全(在大多数系统上)和小端
void cnb(void *val, size_t bit, int value)
{
uint8_t *ptr = val;
ptr += bit >> 3;
if(val) *ptr |= (!!val) << (bit & 7);
else *ptr &= ~((!!val) << (bit & 7));
}