C.CoderCreator Ответов: 7

C# можно ли преобразовать точку или местоположение в int?


Можно ли ввести точку или местоположение, потому что это то, что iv пытался и потерпел неудачу

Можно ли преобразовать точку или местоположение в int. Это то, что я пытался, но это не удалось.

int d = (206,362);


Кто-нибудь может мне помочь?

Manfred Rudolf Bihy

Вы уже испробовали мой совет?

Keith Barrow

Почему?

7 Ответов

Рейтинг:
45

Rob Grainger

Работает для 16-битных координат, не больше:

int intPt = (x << 16) | (y);

С выдержка X-коорд:
int x = (intPt & 0xFF00) >> 16;

и y-coord:
int y = intPt & 0x00FF;

Тем не менее, я действительно не рекомендовал бы его. Что ты пытаешься сделать?


fjdiewornncalwe

+5 это делает работу, о которой он просит

Sergey Alexandrovich Kryukov

5, предложите в качестве ответа.
--СА

Espen Harlinn

Хорошо и просто. a 0x0A >> 1

Рейтинг:
37

Manfred Rudolf Bihy

Вы можете легко сопоставить точку с int, учитывая следующие ограничения. Компоненты точек x и y также являются int. Диапазон x равен, например, [0..255] , а диапазон y также равен [0..255]. Затем отображение точки на int вычисляется по формуле:

//This code is pure pseudo code
//Declare the range and a point
Range r = new Range(0,255);
Point<int,int> aPoint = new Point<int,int>(50,60,r);

//Here we map the point to an int
int mappedPoint = aPoint.x + aPoint.y * (r.Upper + 1);

//Here we map the int back to a point
int x = mappedPoint % (r.Upper + 1);
int y = mappedPoint / (r.Upper + 1);
Point<int,int> mappedPointFromInt = new Point<int,int>(x, y); 


Так что да, отображение действительно возможно, учитывая, что вышеизложенные ограничения соблюдаются. Следует ввести проверку, чтобы убедиться, что отображенная точка будет вписываться в int.

Ваше здоровье!


fjdiewornncalwe

Ницца... Но вы действительно думаете, что ОП поймет это? (+5)
Возможно, добавьте кучу преобразований Int16, 32 и 64 с битовым сдвигом просто для удовольствия.:) (объедините свои ответы и ответы Роба Грейнджера)

Nish Nishant

5д. Предложено в качестве ответа.

Espen Harlinn

в 5

Рейтинг:
2

#realJSOP

Вы могли бы сопоставить его с decimal (если компонент int значения не слишком велики), который, по своей сути, и является целочисленным типом.

Я бы посмотрел на то, чтобы просто сделать строку с двумя значениями в ней, разделенными пробелом.


Рейтинг:
2

CPallini

(Двумерная) точка-это пара чисел Таким образом, вы обычно не можете сопоставить его с одним целым числом, что не имеет смысла (отображение двумерных точек на комплексные числа, с другой стороны, вполне естественно).
:)


Рейтинг:
1

#realJSOP

Вот еще одна идея - если значения статичны, создайте [Flags] enum, и просто или их вместе. Это позволило бы снова разделить их. Конечно, это не сработает, если они оба имеют одинаковую ценность.

В каждом ответе есть дыры...


Рейтинг:
1

Richard MacCutchan

Цитата: потому что это то, что iv: пожалуйста, используйте правильные слова, а не "txtspk".

Как вы собираетесь преобразовать пару чисел в целое число; следует ли их умножать, складывать и т. д.? Это не имеет смысла ни математически, ни синтаксически. Возможно, если вы объясните, какую проблему вы пытаетесь решить, люди смогут сделать некоторые полезные предложения.


Рейтинг:
0

Nithin Sundar

Здесь вы можете использовать точечную структуру для координат x и y типа integer.

Подробная информация:
http://msdn.microsoft.com/en-us/library/system.drawing.point.aspx[^]