Lucene.Net  3.0.3
Lucene.Net is a .NET port of the Java Lucene Indexing Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties
PayloadHelper.cs
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 using Lucene.Net.Support;
19 
20 namespace Lucene.Net.Analysis.Payloads
21 {
25  public static class PayloadHelper
26  {
27  public static byte[] EncodeFloat(float payload)
28  {
29  return EncodeFloat(payload, new byte[4], 0);
30  }
31 
32  public static byte[] EncodeFloat(float payload, byte[] data, int offset)
33  {
34  return EncodeInt(Single.FloatToIntBits(payload), data, offset);
35  }
36 
37  public static byte[] EncodeInt(int payload)
38  {
39  return EncodeInt(payload, new byte[4], 0);
40  }
41 
42  public static byte[] EncodeInt(int payload, byte[] data, int offset)
43  {
44  data[offset] = (byte) (payload >> 24);
45  data[offset + 1] = (byte) (payload >> 16);
46  data[offset + 2] = (byte) (payload >> 8);
47  data[offset + 3] = (byte) payload;
48  return data;
49  }
50 
57  public static float DecodeFloat(byte[] bytes)
58  {
59  return DecodeFloat(bytes, 0);
60  }
61 
69  public static float DecodeFloat(byte[] bytes, int offset)
70  {
71  return Single.IntBitsToFloat(DecodeInt(bytes, offset));
72  }
73 
74  public static int DecodeInt(byte[] bytes, int offset)
75  {
76  return ((bytes[offset] & 0xFF) << 24) | ((bytes[offset + 1] & 0xFF) << 16)
77  | ((bytes[offset + 2] & 0xFF) << 8) | (bytes[offset + 3] & 0xFF);
78  }
79  }
80 }