代码之家  ›  专栏  ›  技术社区  ›  Mehdi Souregi

如何在javascript中将整数转换为short

  •  2
  • Mehdi Souregi  · 技术社区  · 8 年前

    我的服务器端(c#)有一个整数 a :

    int a = 65512;
    

    当我能把它缩短的时候: (short)a 等于-24

    我想将此转换转到客户端(javascript)

    我试图将其转换为第一个二进制: a.toString(2) 然后做一个 a.toString(2) & 0xFF 但这是徒劳的

    如何在javascript端将数字转换为短数字?

    4 回复  |  直到 8 年前
        1
  •  8
  •   Patrick Roberts Benjamin Gruenbaum    8 年前

    您可以通过使用 TypedArray 特别是, Int16Array :

    function toShort(number) {
      const int16 = new Int16Array(1)
      int16[0] = number
      return int16[0]
    }
    
    console.log(toShort(65512))
        2
  •  6
  •   T.J. Crowder    8 年前

    JavaScript没有 int short 就这样,它 number ,它是IEEE-754双精度二进制浮点类型(和中的类型化数组 Patrick Roberts' answer )。但是,对于某些操作,它的行为类似于具有32位整数类型。

    您可以使用数字并使用位移位运算符来丢失32位值的一半,如下所示:

    var a = 65512;
    a = (a << 16) >> 16;
    console.log(a);
        3
  •  1
  •   DavidG    8 年前

    另一个选项是了解C#溢出了数字,因此您可以检查它是否超过了短路的最大值32767(07FFF),然后减去int+1的最大值65536(0x10000)。例如:

    var number = 65512
    var shortValue = number > 0x7FFF ? number - 0x10000 : number;
    console.log(shortValue);
        4
  •  0
  •   Johnny Guy    8 年前

    JavaScript不支持short等变量类型。 您必须确保服务器端的数字简短,并将其作为字符串保存在JavaScript端。