-2

私はJavaで次のコードを持っています:

 public static byte[] hex(String hex) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int nexti = 0;
int nextb = 0;
boolean highoc = true;
outer:
while (true)
{
  int number = -1;
  while (number == -1) {
    if (nexti == hex.length()) {
      break outer;
    }
    char chr = hex.charAt(nexti);
    if ((chr >= '0') && (chr <= '9'))
      number = chr - '0';
    else if ((chr >= 'a') && (chr <= 'f'))
      number = chr - 'a' + 10;
    else if ((chr >= 'A') && (chr <= 'F'))
      number = chr - 'A' + 10;
    else {
      number = -1;
    }
    nexti++;
  }
  if (highoc) {
    nextb = number << 4;
    highoc = false;
  } else {
    nextb |= number;
    highoc = true;
    baos.write(nextb);
  }
}
label161: return baos.toByteArray();

}

MemoryStream が唯一のオプションであり、バッファーがないため、C# に変換しようとしていますが、失敗しています。

これは私が今持っているものです:

public static byte[] fromString(string hex)
    {
        MemoryStream baos = new MemoryStream();
        int nexti = 0;
        int nextb = 0;
        bool highoc = true;
        for (; ; )
        {
            int number = -1;
            while (number == -1)
            {
                if (nexti == hex.Length)
                {
                    goto END;
                }
                char chr = hex.ToCharArray()[nexti];
                if (chr >= '0' && chr <= '9')
                {
                    number = chr - '0';
                }
                else if (chr >= 'a' && chr <= 'f')
                {
                    number = chr - 'a' + 10;
                }
                else if (chr >= 'A' && chr <= 'F')
                {
                    number = chr - 'A' + 10;
                }
                else
                {
                    number = -1;
                }
                nexti++;
            }
            if (highoc)
            {
                nextb = number << 4;
                highoc = false;
            }
            else
            {
                nextb |= number;
                highoc = true;
                baos.Write(nextb);
            }
        }
    END:
        return baos.toByteArray();
    }

Javaのように動作させるには、他に何ができますか?..ありがとう。

4

1 に答える 1