-
-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathNumberHelper.cs
52 lines (46 loc) · 1.37 KB
/
NumberHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
namespace Iot.Device.Common
{
/// <summary>
/// Helpers for number.
/// </summary>
public static class NumberHelper
{
/// <summary>
/// BCD To decimal
/// </summary>
/// <param name="bcd">BCD Code</param>
/// <returns>decimal</returns>
public static int Bcd2Dec(byte bcd) => ((bcd >> 4) * 10) + (bcd % 16);
/// <summary>
/// BCD To decimal
/// </summary>
/// <param name="bcds">BCD Code</param>
/// <returns>decimal</returns>
public static int Bcd2Dec(byte[] bcds)
{
int result = 0;
foreach (byte bcd in bcds)
{
result *= 100;
result += Bcd2Dec(bcd);
}
return result;
}
/// <summary>
/// Decimal To BCD
/// </summary>
/// <param name="dec">decimal</param>
/// <returns>BCD Code</returns>
public static byte Dec2Bcd(int dec)
{
if ((dec > 99) || (dec < 0))
{
throw new ArgumentException(nameof(dec), "Value must be between 0-99.");
}
return (byte)(((dec / 10) << 4) + (dec % 10));
}
}
}