0

私はまだこれに対する解決策を見つけていないので、頭が痛いです... D:

今、次のような文字列があるとしましょう:

string n = "74657374";

それをバイト配列に変換したい。

byte[] { 0x74, 0x65, 0x73, 0x74 }; //how I want it like

これについて最善の方法は何ですか?

4

3 に答える 3

1

これを試して:

public static byte[] GetNumbers(string data)
{
    if (data == null) throw new ArgumentNullException();
    if (data.Length % 2 != 0
           || !data.All(char.IsDigit)) throw new ArgumentException();
    List<byte> temp = new List<byte>(data.Length / 2);
    for (int i = 0; i < data.Length; i += 2)
    {
        temp.Add(byte.Parse(string.Concat(data[i], data[i + 1]),
            NumberStyles.HexNumber));
    }
    return temp.ToArray();
}

また、文字列が適切にフォーマットされていない可能性がある場合は、これを使用します (フォーマット以外は同じTryXです)。

public static bool TryGetNumbers(string data, out byte[] output)
{
    if (data == null || data.Length % 2 != 0 || !data.All(char.IsDigit))
    {
        output = null;
        return false;
    }
    List<byte> temp = new List<byte>(data.Length / 2);
    for (int i = 0; i < data.Length; i += 2)
    {
        temp.Add(byte.Parse(string.Concat(data[i], data[i + 1]),
            NumberStyles.HexNumber));
    }
    output = temp.ToArray();
    return false;
}
于 2013-06-08T10:18:29.223 に答える