BACnet.Tagging.TagWriter.WriteSigned64 C# (CSharp) Method

WriteSigned64() public method

Writes a signed tag to the stream
public WriteSigned64 ( long value, byte tag = 255 ) : void
value long The value to write
tag byte The tag number, or 255 for an application tag
return void
        public void WriteSigned64(long value, byte tag = 255)
        {
            int length;

            if (value < (1L << 7) && value >= (-1L << 7))
                length = 1;
            else if (value < (1L << 15) && value >= (-1L << 15))
                length = 2;
            else if (value < (1L << 23) && value >= (-1L << 23))
                length = 3;
            else if (value < (1L << 31) && value >= (-1L << 31))
                length = 4;
            else if (value < (1L << 39) && value >= (-1L << 39))
                length = 5;
            else if (value < (1L << 47) && value >= (-1L << 47))
                length = 6;
            else if (value < (1L << 55) && value >= (-1L << 55))
                length = 7;
            else
                length = 8;

            _writeLengthHeader(tag, ApplicationTag.Signed, length);
            var bytes = new Union8(value).ReverseLE();
            switch (length)
            {
                case 8: _writer.Write(bytes.Byte0); goto case 7;
                case 7: _writer.Write(bytes.Byte1); goto case 6;
                case 6: _writer.Write(bytes.Byte2); goto case 5;
                case 5: _writer.Write(bytes.Byte3); goto case 4;
                case 4: _writer.Write(bytes.Byte4); goto case 3;
                case 3: _writer.Write(bytes.Byte5); goto case 2;
                case 2: _writer.Write(bytes.Byte6); goto case 1;
                case 1: _writer.Write(bytes.Byte7); break;
            }
        }