2014-09-26 3 views
1

У меня есть следующий код, который мне нужно, чтобы избавиться от функции ASC Microsoft.VisualBasic():Что эквивалентно функции ASC() VB?

Dim keyWithoutDashes As String = p_licenseKey.Replace("-", "").Trim.ToLower 
Dim checksum As Int32 = 0 
Dim modValue As Byte 
Dim checkValue As Byte 
Dim checkChar As Char 
checksum = 0 
checkValue = CByte(Asc(keyWithoutDashes.Substring(24, 1))) 
For pos = 0 To 23 
    checksum += CByte(Asc(keyWithoutDashes.Substring(pos, 1))) 
Next 
checksum = checksum Mod 34 
modValue = CByte(Asc(VALID_CHARACTERS_BACKWARD.Substring(checksum, 1))) 
If modValue <> checkValue Then 
    m_keyErrorMessage = "Invalid LicenseKey" 
    Return False 
End If 

Я пытался заброса ИНТ без успеха. Какие-либо предложения?

Мне нужно, чтобы код работал в библиотеке Microsoft Portable Class Library.

+0

Это то, что вы ищете? [Преобразование символьного кода в char (VB.NET)] (http://stackoverflow.com/questions/4857866/converting-a-character-code-to-char-vb-net) –

+0

Если вам действительно нужен 'Asc 'и не может использовать' Microsoft.VisualBasic.dll', вы можете просто взглянуть на [источник ссылки] (http://referencesource.microsoft.com/#Microsoft.VisualBasic/Strings.vb#245) и воссоздать/скопировать его самостоятельно. – sloth

+0

'Strings.ASC()' –

ответ

1

В ответ благодаря комментарий Hans Passant в выше:

checksum = 0 
checkValue = Encoding.ASCII.GetBytes(keyWithoutDashes.Substring(24, 1))(0) 
For pos = 0 To 23 
    checksum += Encoding.ASCII.GetBytes(keyWithoutDashes.Substring(pos, 1))(0) 
Next 
checksum = checksum Mod 34 
modValue = Encoding.ASCII.GetBytes(
    VALID_CHARACTERS_BACKWARD.Substring(checksum, 1))(0) 

If modValue <> checkValue Then 
    m_keyErrorMessage = "Invalid LicenseKey" 
    Return False 
End If 
Смежные вопросы