Две действия, които не мога да си обясня!
Здравейте, името на темата не е най-доброто, но не знам как иначе да я именувам. Става на въпрос за следното нещо.
string input = "Hi";
int a = input[0]; (това е равно на 72, защото явно в Unicode таблицата буквата "H" е равна на 72 в decimal репрезентация)
НО АКО НАПИШЕМ
string unicode = ((int)input[0]).ToString("x4"); (Това ще бъде равно на 0048, колкото е Unicode репрезентацията на буквата "H")
След малък експеримен ако прoменим ToString("x4") на ToString("x5"), то явно резултата ще стане 00048, т.е. това в скобите служи за форматиране на резултата, макар аз да не знам, а и не помня да сме учили, че можем да задаваме някакви стойности на .ToString() метода.
Сега аз съм в пълно недоумение, как подяволите когато кастнем char 'H' към Int, което от по-горния пример знаем, че е = 72, като му сложим .ToString("x") метода и то вече е равно на 0048. Явно роля играе "х" в скобите, защото ако го променим да няма стойност в метода то ще върне 72, а в случеят 4-ката след това го допълва до 4 символа с 0-ли след като някак си е конвертирано към Unicode.
Но в крайна сметка, аз пак не мога да си обясня какво точно се случва!
Между другото, става на въпрос за задача 5, в домашното за Стрингообработка.
Моля някой да ми помогне да разбера, но по възможно най-елементарния и подробен начин, за да е сигурно, че всеки ще може да го разбере.
Т.е. когато искаме дадено число от десетична да го покажем в 16-тична пишем .ToString("x"), така ли?
Това учено ли е в някоя конкретна тема, или е нещо "допълнително", което евентуално може да знаем вече, или трябва да си намерим сами.
Не погледна ли отговора и на другия отговорил? Там има линк към MSDN и пише какво значи "x" и "X". Да, шестадесетична бройка система означва. Дали сте го учили - възможно е на C# Basics да е учено, но не мога да гарантирам. Така или иначе в .NET библиотеките има стотици хиляди методи, приемащи стотици хиляди видове аргументи. Няма как всеки да се покаже. От вас се предполага, че с времето ще развивате своите знания сами, не само до методите, които са показани на лекции.
Ползвай стандартното форматиране с плейсхолдър, спецификатор(х) и прецизност(4). Има го в учебника и е по-разбираемо:
Console.WriteLine("\\u{0:x4}", (int)input[i]);