为何后台返回的-1,在iOS端显示:(long)72057594037927935

72057594037927935 等于 0x 00FFFFFF FFFFFFFF 七个字节全FF
本来是个long类型的数字,强制转化成int类型,就只取后面4个字节,前面的丢弃了
也就是0xFFFFFFFF——>0b11111111 11111111 11111111 11111111
因为是int类型,而不是unsigned int,所以第一位二进制作为符号位,0是正数,1是负数,这里的最高位是1,所以是负数。
因为是负数,所以后面的数需要取反码,即全部取反,0—>1, 1—>0, 然后再加1
31个1取反就是31个0,再加1,就是1,符号位是1,代表负数,所以这个值就是-1

你可能感兴趣的:(为何后台返回的-1,在iOS端显示:(long)72057594037927935)