private static int CompareBinary(SqlString x, SqlString y)
{
byte[] rgDataX = s_unicodeEncoding.GetBytes(x._value);
byte[] rgDataY = s_unicodeEncoding.GetBytes(y._value);
int cbX = rgDataX.Length;
int cbY = rgDataY.Length;
int cbMin = cbX < cbY ? cbX : cbY;
int i;
Debug.Assert(cbX % 2 == 0);
Debug.Assert(cbY % 2 == 0);
for (i = 0; i < cbMin; i++)
{
if (rgDataX[i] < rgDataY[i])
return -1;
else if (rgDataX[i] > rgDataY[i])
return 1;
}
i = cbMin;
int iCh;
int iSpace = ' ';
if (cbX < cbY)
{
for (; i < cbY; i += 2)
{
iCh = rgDataY[i + 1] << 8 + rgDataY[i];
if (iCh != iSpace)
return (iSpace > iCh) ? 1 : -1;
}
}
else
{
for (; i < cbX; i += 2)
{
iCh = rgDataX[i + 1] << 8 + rgDataX[i];
if (iCh != iSpace)
return (iCh > iSpace) ? 1 : -1;
}
}
return 0;
}