insert into test (updateTs) value (from_unixtime(%d)) update updateTs = values(updateTs)
后面Update中的updateTs = 不能加from_unixtime
printf 等 %d %ll
#include<stdio.h>
int main()
{
unsigned long long b =1 ;
int a = 1;
printf("%d,%d",b,a);
return 0;
}
输出结果是 1,0
因为 %d是取四字节的,而b是unsigned long long 类型 8字节,按照字节序取,先取了b低位的四位,之后因为b还没有取完,第二个%d又需要4个字节,就取了b的高四位,因此得到结果是 1,0
高低位合并:
有时候发现协议用的数据类型太短,需要增大。又需要做到版本兼容的时候。可以采用分割高低位的方法。
譬如:原本使用的是 unsigned int XXX 需要变为 unsigned long long
unsigned int 是32位的
unsigned long long 是64位的
计算出来的unsigned long long 数据 qwAAA
协议增加一个字段 XXXhigh
原本的XXX 存qwAAA的低32位,XXXhigh存qwAAA的高32位
#define LODWORD(l) ((DWORD)((l) & 0xffffffff))
#define HIDWROD(l) ((DWORD)((l) >> 32))
组合回unsigned long long 类型
譬如:XXXhigh = 3 二进制:11
0-------31 32------63
(低位) (高位)
11 分别对应 32位 33位
XXX + 2^32 + 2^33 就是真实的值了