На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Как перевести Int32 в UInt32?
    VB.Net

    мне снова стыдно за тупейший вопрос, но тем не менее осмелюсь задать

    в общем, даже не знаю, как спросить. в общем, есть функция АПИшная (из Windows Mobile, но мой вопрос скорее мне интересен для десктопа), возвращает она Int32. если значение минимально, то это ноль - все правильно, а если максимально - тут ошибка, так как 32 двоичных единици в Int32 значит -1, кажется, а просто очень большое значение становится отрицательным. Uint32 параметром функции не катит (ругается что-то студия), да и это просто спортивный интерес. я столько уже перепробовал, работает только один метод:

    Dim z as Integer = что-то там
    Dim a As UInt32 = Convert.ToUInt32(Convert.ToString(z, 2), 2)

    этим способом биты одного числа в другое перекидываются, а как сделать по-человечески (без конвертации в строку и обратно)? я понимаю, что я тупой, но никак не могу понять, что тут делать надо... >_< просто cuint, ctype, convert.touint32, directcast (это все, до чего я допёр) не получается юзать
      ExpandedWrap disabled
        int t = -1;
        uint tt = (uint)t;
        это для C#. ты мне скажи, как это написать на VB.Net. не буду же я для программы создавать на C# библиотеку из одной функции, чтобы таскать с прогой.
          А у тебя в программе вообще одна экзешка и никогда не бывает длл-сборок? :) В конце концов это один из плюсов .NET - многоязычность.
          А насчет VB.NET ничего хорошо сказать не могу, так что лучше промолчу...
            так и вообще ничего не надо писать тогда. я пишу слишком простые вещи, если не сказать - элементарные, чтобы таскать с собой DLL.
              Цитата Vitik @
              это для C#. ты мне скажи, как это написать на VB.Net.

              ExpandedWrap disabled
                Dim t As Integer = -1
                Dim tt As UInt32 = DirectCast(t, UInt32)
                Цитата juice @
                Dim t As Integer = -1
                Dim tt As UInt32 = DirectCast(t, UInt32)


                ExpandedWrap disabled
                  Error 1 Value of type 'Integer' cannot be converted to 'UInteger'


                Добавлено
                ругается, подчеркивая t
                  ExpandedWrap disabled
                            Dim t As Integer = 1
                            Dim tt As UInt32 = Convert.ToUInt32(t)
                    ну, блин, с положительными-то числами проблем и нет. единицу я бы и сам перевести мог. число в Integer может получаться и отрицательным, а тогда конвертация Convert.ToUint32 уже не катит. вы все издеваетесь или не понимаете? я ж в шапке описал, что пробовал все предложенное.
                      Цитата Vitik @
                      Convert.ToUint32 уже не катит. вы все издеваетесь или не понимаете? я ж в шапке описал, что пробовал все предложенное.

                      Сорри. Можешь попробовать еще так:

                      ExpandedWrap disabled
                                Dim t As Integer = -1
                                Dim tt As UInt32 = BitConverter.ToUInt32(BitConverter.GetBytes(t), 0)
                        спасибо, работает
                        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0310 ]   [ 15 queries used ]   [ Generated: 20.05.24, 11:17 GMT ]