Int與Uint的區別在於帶符號與不帶符號,在計算機中根據補碼進行互相轉換,很多語言是有方法支持的,但是也有一些並沒有轉換方法,比如SQLserver(SQLserver不支持Uint類型),下面這個方法理論上可以運用於任何語言進行轉換。
SQLserver中並不存在uint,所以我們用bigint格式來接收轉換后的數據
int→uint
如果為正數:數據(正數不變)
如果為負數:MaxInt-MinInt-(|數據|)+1 = 2147483647-(-2147483648)+(數據)+1 = 4294967296+(數據)
SQL代碼:
DECLARE @int INT =-1
SELECT CASE WHEN @int>=0 THEN @int ELSE 4294967296+@int END
JS代碼:
function int2uint(i) {
if (i >= 0)
return i;
else
4294967296 + i;
}
uint→int
如果小於等於MaxInt:數據(不變)
如果大於MaxInt:(數據)-MaxInt+MinInt-1=(數據)-2147483647+(-2147483648)-1=(數據)-4294967296
SQL代碼:
DECLARE @uint BIGINT=4294967295
SELECT CASE WHEN @uint<=2147483647 THEN @uint ELSE @uint-4294967296 End
JS代碼:
function uint2int(i) {
if (i <= 2147483647)
return i;
else
return i - 4294967296
}