diff options
Diffstat (limited to 'sample-apps/src/main/java/org/onap/integration/actninterfacetools/sampleapp/mpiconverter/converter/PncUtils.java')
-rw-r--r-- | sample-apps/src/main/java/org/onap/integration/actninterfacetools/sampleapp/mpiconverter/converter/PncUtils.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/sample-apps/src/main/java/org/onap/integration/actninterfacetools/sampleapp/mpiconverter/converter/PncUtils.java b/sample-apps/src/main/java/org/onap/integration/actninterfacetools/sampleapp/mpiconverter/converter/PncUtils.java new file mode 100644 index 0000000..3d92d4c --- /dev/null +++ b/sample-apps/src/main/java/org/onap/integration/actninterfacetools/sampleapp/mpiconverter/converter/PncUtils.java @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Actn Interface Tools + * ================================================================================ + * Copyright (C) 2023 Huawei Canada Limited. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.integration.actninterfacetools.sampleapp.mpiconverter.converter; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PncUtils { + + private static final Logger log = LoggerFactory.getLogger(PncUtils.class); + //startIdx is 1-indexing; + public static void setBitsZero(byte[] bytes, int startIdx, int length){ + int currentByteIdx = (startIdx -1) / 8; + + if (currentByteIdx < bytes.length){ + byte currByte = bytes[currentByteIdx]; + int offset = startIdx ; + while (offset - startIdx < length){ + int currBitIdx = (offset - 1) % 8; + currByte = (byte) (currByte & ~(1 << (7 - currBitIdx))); + bytes[currentByteIdx] = currByte; + if (currBitIdx == 7){ + currentByteIdx++; + if (currentByteIdx < bytes.length ){ + currByte = bytes[currentByteIdx]; + } + } + offset++; + } + return; + } + throw new IllegalArgumentException("PncUtils: setBits: Illegal Argument"); + } + + public static void setBitsOne(byte[] bytes, int startIdx, int length){ + int currentByteIdx = (startIdx -1) / 8; + + if (currentByteIdx < bytes.length){ + byte currByte = bytes[currentByteIdx]; + int offset = startIdx ; + while (offset - startIdx < length){ + int currBitIdx = (offset - 1) % 8; + currByte = (byte) (currByte | (1 << (7 - currBitIdx))); + bytes[currentByteIdx] = currByte; + if (currBitIdx == 7){ + currentByteIdx++; + if (currentByteIdx < bytes.length ){ + currByte = bytes[currentByteIdx]; + } + } + offset++; + } + return; + } + throw new IllegalArgumentException("PncUtils: setBits: Illegal Argument"); + } + + public static boolean isBitsOne(byte[] bytes, int startIdx, int length){ + int currentByteIdx = (startIdx -1) / 8; + + if (currentByteIdx < bytes.length){ + byte currByte = bytes[currentByteIdx]; + int offset = startIdx ; + while (offset - startIdx < length){ + int currBitIdx = (offset - 1) % 8; + if ( ((0x01 << (7 - currBitIdx)) & currByte) == 0){ + return false; + }; + if (currBitIdx == 7){ + bytes[currentByteIdx] = currByte; + currentByteIdx++; + if (currentByteIdx < bytes.length ){ + currByte = bytes[currentByteIdx]; + } + } + offset++; + } + return true; + } + throw new IllegalArgumentException("PncUtils: setBits: Illegal Argument"); + } +} |