В соответствии с шахматной версией страницы BitScan и моими собственными измерениями вычесть и xor быстрее, чем negate и mask.
(Обратите внимание, что если вы собираетесь подсчитать конечные нули в 0, метод, поскольку у меня он возвращает 63, тогда как отрицание и маска возвращаются 0.)
Вот 64-битный вычитание и xor:
unsigned long v; // find the number of trailing zeros in 64-bit v
int r; // result goes here
static const int MultiplyDeBruijnBitPosition[64] =
{
0, 47, 1, 56, 48, 27, 2, 60, 57, 49, 41, 37, 28, 16, 3, 61,
54, 58, 35, 52, 50, 42, 21, 44, 38, 32, 29, 23, 17, 11, 4, 62,
46, 55, 26, 59, 40, 36, 15, 53, 34, 51, 20, 43, 31, 22, 10, 45,
25, 39, 14, 33, 19, 30, 9, 24, 13, 18, 8, 12, 7, 6, 5, 63
};
r = MultiplyDeBruijnBitPosition[((uint32_t)((v ^ (v-1)) * 0x03F79D71B4CB0A89U)) >> 58];
Для справки, вот 64-битная версия метода отрицания и маски:
unsigned long v; // find the number of trailing zeros in 64-bit v
int r; // result goes here
static const int MultiplyDeBruijnBitPosition[64] =
{
0, 1, 48, 2, 57, 49, 28, 3, 61, 58, 50, 42, 38, 29, 17, 4,
62, 55, 59, 36, 53, 51, 43, 22, 45, 39, 33, 30, 24, 18, 12, 5,
63, 47, 56, 27, 60, 41, 37, 16, 54, 35, 52, 21, 44, 32, 23, 11,
46, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6
};
r = MultiplyDeBruijnBitPosition[((uint32_t)((v & -v) * 0x03F79D71B4CB0A89U)) >> 58];
Какую аутентификацию вы используете? Если это проверка подлинности форм, то в лучшем случае вам нужно будет найти файл cookie .ASPXAUTH и передать его в запросе WebClient
.
В худшем случае это не сработает.
Публичная функция getWeb (ByRef sURL As String) As String Dim myWebClient As New System.Net.WebClient () Попробуйте отключить myCredentialCache как новый System.Net.CredentialCache () Dim myURI As New Uri (sURL) myCredentialCache. Добавить (myURI, «ntlm», System.Net.CredentialCache.DefaultNetworkCredentials) myWebClient.Encoding = System.Text.Encoding.UTF8 myWebClient.Credentials = myCredentialCache Возвращает myWebClient.DownloadString (myURI) Catch ex As Exception Возврат «Исключение» & amp; ex.ToString () End Try End Function
Вам нужно предоставить объекту WebClient учетные данные. Что-то вроде этого ...
WebClient client = new WebClient (); client.UseDefaultCredentials = true; client.Credentials = новый NetworkCredential («имя пользователя», «пароль»);
WebClient
, чтобы вести себя так, как если бы браузер действовал. Вам нужно отправить файл cookie. – John Saunders 10 December 2009 в 21:26