PhysicalAddress.Parse() не анализирует строку в нижнем регистре, это ошибка?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 PhysicalAddress.Parse() не анализирует строку в нижнем регистре, это ошибка?

Сообщение Anonymous »

Примечание: использование .Net 4.0

Рассмотрим следующий фрагмент кода.

Код: Выделить всё

String ad = "FE23658978541236";
String ad2 = "00FABE002563447E".ToLower();
try
{
PhysicalAddress.Parse(ad);
}
catch (Exception)
{
//We dont get here, all went well
}
try
{
PhysicalAddress.Parse(ad2);
}
catch (Exception)
{
//we arrive here for what reason?
}
try
{
//Ok, I do it myself then.
ulong dad2 = ulong.Parse(ad2, System.Globalization.NumberStyles.HexNumber);
byte[] bad2 = BitConverter.GetBytes(dad2);
if (BitConverter.IsLittleEndian)
{
bad2 = bad2.Reverse().ToArray();
}
PhysicalAddress pa = new PhysicalAddress(bad2);
}
catch (Exception ex)
{
//We don't get here as all went well
}
Поэтому в методе PhysicalAddress.Parse выдается исключение при попытке проанализировать адрес в нижнем регистре. Когда я смотрю на исходный код .Net, мне становится совершенно ясно, почему.
Это из-за следующего фрагмента кода.

Код: Выделить всё

    if (value >= 0x30 && value = 0x41 && value = 0 ){
hasDashes = true;
buffer = new byte[(address.Length+1)/3];
}
else{

if(address.Length % 2 > 0){  //should be even
throw new FormatException(SR.GetString(SR.net_bad_mac_address));
}

buffer = new byte[address.Length/2];
}

int j = 0;
for (int i = 0; i < address.Length; i++ ) {

int value = (int)address[i];

if (value >= 0x30 && value = 0x41 && value = 2){
throw new FormatException(SR.GetString(SR.net_bad_mac_address));
}

if (validCount%2 == 0) {
buffer[j] = (byte) (value 

Подробнее здесь: [url]https://stackoverflow.com/questions/18506334/physicaladdress-parse-wont-parse-lower-cased-string-is-this-a-bug[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»