2015-01-25 2 views
1

У меня есть строка, которая содержит следующее значение: 0x6007.(stringToShort) Я хочу, чтобы преобразовать эту строку в короткий вар, однако, когда я пытаюсь преобразовать его в следующем пути:Преобразовать строку в короткие

short s = ((short)Convert.ToUInt16(stringToShort, 16)); 

тогда s равна 24583, а не 0x6007, поскольку мне нужно.

Может ли кто-нибудь помочь?

+7

«0x6007» представляет собой шестнадцатеричное представление 24583 (и '110000000000111' в двоичном формате :)) – EZI

+0

Как сказано выше, 0x6007 = 24583. Вы хотите отобразить свой ответ в шестнадцатеричном формате? – Hayden

+0

Да, я хочу, чтобы короткий var отображался в шестнадцатеричном формате, тогда :) – user3976173

ответ

0

Значения типа «0x6007» и «24583» предназначены для человека потребление. Они представляют собой текстовые представления числа и имеют смысл только для людей.

Что касается компьютера, то при работе с действительными числами он понимает только двоичный код (и даже там, только в абстрактном смысле & hellip, он буквально не хранит двоичные цифры 0 и 1).

Каждый раз, когда вы спросите компьютер, какое число он думает о, он будет конвертировать из этого бинарной основы представления в удобочитаемое представление (даже если бинарный & hellip; мы тщедушные люди не могут видеть от состояния бит в компьютере и попросить компьютер перевести их на визуальное представление).

Когда вы храните значение 0x6007 в (например) переменной short, эта переменная содержит значение 0x6007. Он также содержит значение 24583. О, и он также содержит значение 110000000000111 (двоичный), а значение 60007 (восьмеричное) и даже значение 12287 (основание двенадцать). Потому что то, что хранит компьютер, не является ни одним из этих конкретных представлений чисел, а скорее его собственным внутренним представлением о величине, представляемом любым из этих человекочитаемых чисел.

Но они все одинаковые. И когда вы анализируете удобочитаемую строку, такую ​​как «0x6007», вы получаете do именно это значение в переменной, в которую вы сохранили результат, т. Е. Внутреннее представление компьютера числа, имеющего такую ​​же величину.

По умолчанию, если вы попросите компьютер рассказать вам, что это за значение, оно даст вам десятичное представление «24583». Но если вы хотите шестнадцатеричное представление, вам нужно только спросить красиво, и компьютер предоставит вам это вместо этого (например, переключите формат числового отображения в вашем отладчике или используйте спецификатор числового формата «X» в string.Format(), Console.WriteLine() и т. Д.), ,

Смежные вопросы