これを行うための組み込み関数はありません。それを行うために C# でストリーミング関数を作成するのは簡単です (2 文字を読み取り、1 バイトを出力します)。SQLCLR 関数を使用してエンジン内で実行することも、クライアント側で実行することもできます。入力が大きい場合は、メモリの過負荷を避けるためにクライアント側で行う方が間違いなく優れています。
ストリーミング変換の例を次に示します (最適化はありませんが、 aを a に変換しないことの重要性を強調しています)。string
byte[]
namespace hex2bin
{
class Program
{
public static void hex2bin(TextReader sin, BinaryWriter sout)
{
char[] block = new char[2];
bool eof = false;
do
{
int chars = sin.ReadBlock(block, 0, 2);
switch (chars)
{
case 0:
eof = true;
break;
case 1:
// Input is odd length, invalid case
throw new Exception("Invalid input");
case 2:
string sblock = new String(block);
byte b = Convert.ToByte(sblock, 16);
sout.Write(b);
break;
}
} while (!eof);
}
static void Main(string[] args)
{
using (StringReader sr = new StringReader("AD5829FC"))
{
using (BinaryWriter bw = new BinaryWriter(new MemoryStream()))
{
hex2bin(sr, bw);
}
}
}
}
}