示例#1
0
        public void EncodeThenDecode_ReturnsOriginalString()
        {
            const string expected = "Test map string to encode";

            var bytes  = _service.EncodeMapString(expected);
            var actual = _service.DecodeMapString(bytes);

            Assert.AreEqual(expected, actual);
        }
示例#2
0
        private byte[] EncodeMapName(IMapFileProperties mapEntity)
        {
            //need to pad the map name with 0 bytes so that the 'flippy' is the correct state based on the length
            //0 bytes are converted to 255 bytes before being written to the file

            var padding      = Enumerable.Repeat((byte)0, 24 - mapEntity.Name.Length).ToArray();
            var nameToEncode = $"{mapEntity.Name}{Encoding.ASCII.GetString(padding)}";

            var encodedName   = _mapStringEncoderService.EncodeMapString(nameToEncode);
            var formattedName = encodedName.Select(x => x == 0 ? (byte)255 : x).ToArray();

            return(formattedName);
        }
示例#3
0
        public byte[] SerializeToByteArray(SignMapEntity mapEntity)
        {
            var retBytes = new List <byte>(SignMapEntity.DATA_SIZE + mapEntity.Title.Length + mapEntity.Message.Length);

            retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.X, 1));
            retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.Y, 1));
            retBytes.AddRange(numberEncoderService.EncodeNumber(mapEntity.Title.Length + mapEntity.Message.Length + 1, 2));

            var fileMsg = new byte[mapEntity.Message.Length + mapEntity.Title.Length];

            var rawTitle = mapStringEncoderService.EncodeMapString(mapEntity.Title);

            Array.Copy(rawTitle, fileMsg, rawTitle.Length);

            var rawMessage = mapStringEncoderService.EncodeMapString(mapEntity.Message);

            Array.Copy(rawMessage, 0, fileMsg, rawTitle.Length, rawMessage.Length);

            retBytes.AddRange(fileMsg);
            retBytes.AddRange(numberEncoderService.EncodeNumber(rawTitle.Length, 1));

            return(retBytes.ToArray());
        }