uint與int互轉


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
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM