コード例 #1
0
ファイル: Utilities.cs プロジェクト: w173357855/libsodium-net
        /// <summary>Takes a byte array and returns a hex-encoded string.</summary>
        /// <param name="data">Data to be encoded.</param>
        /// <param name="format">Output format.</param>
        /// <param name="hcase">Lowercase or uppercase.</param>
        /// <returns>Hex-encoded string.</returns>
        /// <remarks>Bit fiddling by CodeInChaos.</remarks>
        /// <remarks>This method don`t use libsodium, but it can be useful for generating human readable fingerprints.</remarks>
        public static string BinaryToHex(byte[] data, HexFormat format, HexCase hcase = HexCase.Lower)
        {
            var sb = new StringBuilder();

            for (var i = 0; i < data.Length; i++)
            {
                if ((i != 0) && (format != HexFormat.None))
                {
                    switch (format)
                    {
                    case HexFormat.Colon:
                        sb.Append((char)58);
                        break;

                    case HexFormat.Hyphen:
                        sb.Append((char)45);
                        break;

                    case HexFormat.Space:
                        sb.Append((char)32);
                        break;

                    default:
                        //no formatting
                        break;
                    }
                }

                var byteValue = data[i] >> 4;

                if (hcase == HexCase.Lower)
                {
                    sb.Append((char)(87 + byteValue + (((byteValue - 10) >> 31) & -39))); //lower
                }
                else
                {
                    sb.Append((char)(55 + byteValue + (((byteValue - 10) >> 31) & -7))); //upper
                }
                byteValue = data[i] & 0xF;

                if (hcase == HexCase.Lower)
                {
                    sb.Append((char)(87 + byteValue + (((byteValue - 10) >> 31) & -39))); //lower
                }
                else
                {
                    sb.Append((char)(55 + byteValue + (((byteValue - 10) >> 31) & -7))); //upper
                }
            }

            return(sb.ToString());
        }
コード例 #2
0
    public void IaPlay()
    {
        int i, j;

        string[] newname;

        if (HexGameManager.firstTurn)
        {
            PlayInFirstCol();
        }
        else
        {
            newname = HexGameManager.lastPlayed.name.Split('-');
            i       = int.Parse(newname[0]); j = int.Parse(newname[1]);
            string choice = "";
            // Calcul des choix possibles
            if ((i + 1 < (nbCases + 1)) && (j - 1 > 0) &&
                GameObject.Find((i + 1) + "-" + (j - 1)).GetComponent <HexCase>().etat == 0)
            {
                choice = (i + 1) + "-" + (j - 1);
            }
            else if ((i + 1 < (nbCases + 1)) &&
                     GameObject.Find((i + 1) + "-" + j).GetComponent <HexCase>().etat == 0)
            {
                choice = (i + 1) + "-" + j;
            }
            else if ((j + 1 < (nbCases + 1)) &&
                     GameObject.Find(i + "-" + (j + 1)).GetComponent <HexCase>().etat == 0)
            {
                choice = i + "-" + (j + 1);
            }
            else if ((j - 1 > 1) && GameObject.Find(i + "-" + (j - 1)).GetComponent <HexCase>().etat == 0)
            {
                choice = i + "-" + (j - 1);
            }
            else
            {
                bool ok = false;
                while (!ok)
                {
                    choice = Random.Range(2, (nbCases - 1)) + "-" + Random.Range(2, (nbCases - 1));
                    HexCase laCase = GameObject.Find(choice).GetComponent <HexCase>();
                    if (laCase.etat == 0)
                    {
                        ok = true;
                    }
                }
            }
            SetPlayedCase(choice);
        }
        CheckIfAIWon();
    }
コード例 #3
0
        /// <summary>Takes a byte array and returns a hex-encoded string.</summary>
        /// <param name="data">Data to be encoded.</param>
        /// <param name="format">Output format.</param>
        /// <param name="hcase">Lowercase or uppercase.</param>
        /// <returns>Hex-encoded string.</returns>
        /// <remarks>Bit fiddling by CodeInChaos.</remarks>
        /// <remarks>This method don`t use libsodium, but it can be useful for generating human readable fingerprints.</remarks>
        public static string BinaryToHex(byte[] data, HexFormat format, HexCase hcase = HexCase.Lower)
        {
            var sb = new StringBuilder();

              for (var i = 0; i < data.Length; i++)
              {
            if ((i != 0) && (format != HexFormat.None))
            {
              switch (format)
              {
            case HexFormat.Colon:
              sb.Append((char)58);
              break;
            case HexFormat.Hyphen:
              sb.Append((char)45);
              break;
            case HexFormat.Space:
              sb.Append((char)32);
              break;
            default:
              //no formatting
              break;
              }
            }

            var byteValue = data[i] >> 4;

            if (hcase == HexCase.Lower)
            {
              sb.Append((char)(87 + byteValue + (((byteValue - 10) >> 31) & -39))); //lower
            }
            else
            {
              sb.Append((char)(55 + byteValue + (((byteValue - 10) >> 31) & -7))); //upper
            }
            byteValue = data[i] & 0xF;

            if (hcase == HexCase.Lower)
            {
              sb.Append((char)(87 + byteValue + (((byteValue - 10) >> 31) & -39))); //lower
            }
            else
            {
              sb.Append((char)(55 + byteValue + (((byteValue - 10) >> 31) & -7))); //upper
            }
              }

              return sb.ToString();
        }
コード例 #4
0
        /// <summary>
        ///     Convert a byte array to a hex string.
        /// </summary>
        /// <param name="data">The byte array to be converted.</param>
        /// <param name="hCase">The case of the result hex string.</param>
        /// <returns>The result hex string.</returns>
        /// <remarks>Encoding to checksummed hex only supports 20 bytes long <paramref name="data" />.</remarks>
        public static string ToHex(this byte[] data, HexCase hCase = HexCase.Lowercase)
        {
            var result      = new StringBuilder(data.Length * 2);
            var hexAlphabet = hCase == HexCase.Lowercase ? "0123456789abcdef" : "0123456789ABCDEF";

            foreach (var b in data)
            {
                result.Append(hexAlphabet[b >> 4]);
                result.Append(hexAlphabet[b & 0xF]);
            }

            if (hCase != HexCase.Checksummed)
            {
                return(result.ToString());
            }

            if (data.Length != 20)
            {
                throw new FormatException("Encoding to checksummed hex only supports 20 bytes long data.");
            }

            var checksum = new Keccak256Managed().ComputeHash(data).ToHex();

            for (var x = 0; x <= 39; x++)
            {
                if (result[x] >= '0' && result[x] <= '9')
                {
                    continue;
                }
                var lower = checksum[x] <= '7';
                if (lower)
                {
                    result[x] += (char)('a' - 'A');
                }
            }

            return(result.ToString());
        }