예제 #1
0
        public void ValidatePartition6_ReturnsTrue()
        {
            var partition      = 6;
            var expectedResult = (20, 24);

            var result = PartitionResolveHelper.GetCompanyPrefixAndItemReference(partition);

            Assert.AreEqual(result, expectedResult);
        }
예제 #2
0
        public static SGTIN_96 Decode_SGTIN_96(string EPC_tag)
        {
            // result of SGTIN-96 object
            var result = new SGTIN_96();

            result.HexValue = EPC_tag;

            //check if EPC_tag is valid SGTIN-96 tag
            if (!Validator.IsValid_SGTIN_96(EPC_tag, true, true))
            {
                result.IsProperlyEncoded = false;
                result.ItemReference     = 0;
                return(result);
            }
            result.IsProperlyEncoded = true;

            // object for SGTIN-96 ranges
            var ranges = new SGTIN_96_Ranges();

            //converting SGTIN-96 to binary string
            string binaryString = "";

            //binaryString = Convert.ToString(Convert.ToInt32(EPC_tag, 16), 2);
            binaryString = string.Join(
                string.Empty,
                EPC_tag.Select(c => Convert.ToString(Convert.ToInt32(c.ToString(), 16), 2).PadLeft(4, '0')));

            //separating and decoding binary string
            var headerBinary = binaryString.Substring(ranges.HeaderStart, ranges.HeaderLength);

            result.Header = Convert.ToInt32(headerBinary, 2);

            var filterBinary = binaryString.Substring(ranges.FilterStart, ranges.FilterLength);

            result.Filter = Convert.ToInt16(filterBinary, 2);

            var partitionBinary = binaryString.Substring(ranges.PartitionStart, ranges.PartitionLength);

            result.Partition = Convert.ToInt16(partitionBinary, 2);

            var partitionResult = PartitionResolveHelper.GetCompanyPrefixAndItemReference(result.Partition);

            var companyPrefixBinary = binaryString.Substring(ranges.CompanyPrefixStart, partitionResult.CompanyPrefixBitsCount);

            result.CompanyPrefix = Convert.ToInt64(companyPrefixBinary, 2);

            var itemReferenceBinary = binaryString.Substring(ranges.CompanyPrefixStart + partitionResult.CompanyPrefixBitsCount, partitionResult.ItemReferenceBitsCount);

            result.ItemReference = Convert.ToInt32(itemReferenceBinary, 2);

            result.SerialNumber = string.Concat(binaryString.TakeLast(ranges.SerialNumberLength));

            return(result);
        }