数値を符号なしから符号付きに変換する方法は?
符号付き: -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;
}