Мы переписываем некоторые приложения, ранее разработанные в Visual FoxPro, и перерабатываем их с использованием .Net (с использованием C #)
Вот наш сценарий:
Наше приложение использует смарт-карты. Мы читаем данные с смарт-карты, которая имеет имя и номер. Имя возвращается хорошо читаемым текстом, но число, в данном случае «900» возвращается как 2-байтовое символьное представление (131 и 132) и выглядит так - * „
Эти 2 специальных символа можно увидеть в расширенной таблице Ascii ... теперь, как вы можете видеть, 2 байта равны 131 и 132 и могут варьироваться, поскольку не существует единой стандартной расширенной таблицы ascii (насколько я могу судить, читая некоторые из постов здесь)
Итак ... смарт-карта была ранее записана для использования функции BINTOC в VFP, и поэтому 900 была записана на карту как ƒ „. А в foxpro эти 2 специальных символа могут быть преобразованы обратно в целочисленный формат с помощью функции CTOBIN ... еще одна встроенная функция в FoxPro ..
Итак (наконец-то, дошли до сути) - до сих пор мы не смогли преобразовать эти 2 специальных символа обратно в int (900), и нам интересно, возможно ли в .NET прочитать символьное представление целого числа? назад к фактическому целому числу.
Или есть способ переписать логику этих двух функций VFP в C #?
UPDATE :
После некоторой путаницы мы понимаем, что для получения 900 в 2 байта нам нужно преобразовать 900 в 16-битное двоичное значение, а затем нам нужно преобразовать это 16-битное двоичное значение в десятичное значение.
Таким образом, как и выше, мы получаем обратно 131 и 132 и их соответствующие двоичные значения как 10000011 (десятичное значение 131) и 10000100 (десятичное значение 132).
Когда мы объединяем эти 2 значения в «1000001110000100», это дает десятичное значение 33668, однако, если мы удалили ведущий 1 и преобразовали «000001110000100» в десятичное, это дает правильное значение 900 ...
Не слишком уверен, почему это так ...
Любая помощь будет оценена.