1

数値を符号なしから符号付きに変換する方法は?

符号付き: -32768 ~ 32767 符号なし: 0 ~ 65535

JavaScriptで問題を解決しています。状況は、たとえば 0 から 65535 までの数値があり、それを適切な符号付きの値に変換したいということです。

例: 65535 は -1 になります。

ビット関連の演算ではなく、算術演算を使用してください。

十分な大きさのデータ型を使用すると仮定すると、これは言語に依存しないはずです。

更新:さらに下の回答による実装:

function convertWordToShort(ival) {
    if (isNaN(ival) === false) {
        if (ival > 32767) {
            ival = ival - 65536;
        }
    }
    return ival;
}
function convertShortToWord(ival) {
    if (isNaN(ival) === false) {
        if (ival < 0) {
            ival = ival + 65536;
        }
    }
    return ival;
}
function convertIntToDWord(ival) {
    if (isNaN(ival) === false) {
        if (ival < 0) {
            ival = ival + 4294967296;
        }
    }
    return ival;
}
function convertDWordToInt(ival) {
    if (isNaN(ival) === false) {
        if (ival > 2147483647) {
            ival = ival - 4294967296;
        }
    }
    return ival;
}
4

3 に答える 3

7

数値が半分を超えているかどうかをテストしてから、モジュラスを減算します。

if(x > 32767) {x = x - 65536;}
于 2013-03-13T17:14:37.990 に答える