У меня есть служба для интеграции с другим приложением, и она принимает всего 21 шестнадцатеричный символ. Мне нужно передать и получить строку с 11 десятичными символами, например: String s = "0101230154V";
Я хотел бы знать, как я могу использовать операции сдвига для преобразования его в биты и передачи, потому что я не могу преобразовать свою десятичную строку в гексагональную, потому что это приведет к 22 шестнадцатеричным символам. Я пробовал с кодом ниже. Я думаю, что шестнадцатеричное преобразование нормально, но когда я попытался преобразовать обратно в десятичную запись, это не сработало, дайте мне другие значения. Программисты C#, C++ и Java, я думаю, могли бы мне помочь.
int n = 99; // 2^6 bits to use 99
int k = 999; // 2^9 bits to use 999
int bits = (n << 6) | (k << 9 << 6); // I'm not sure if it is ok to convert and use with hexa
var hexa = bits.ToString("X"); // I will transmit this hexa to a web service
А в другом проекте у меня есть служба Windows для чтения гекса из веб-службы. Я могу читать нормально, но я не знаю, как преобразовать обратно шестнадцатеричное значение и взять значения n
и k
для примера:
string hexa = GetFromWebService(); // get from the value from the web service here, its fine
// I will recieve the hexa and get the number in bits
int received = Int32.Parse(hexa, System.Globalization.NumberStyles.HexNumber);
// here I need to discover the N and K values... how?
Как узнать значения n
и k
?
Окончательное решение
long v = 123456789456;
string h = v.ToString("X");
// trasmit h value
var data = long.Parse(hexaValueFromService, System.Globalization.NumberStyles.HexNumber);
благодарю вас
String s = "0101230154V";
содержит 11 символов, но последний символ не является десятичным. Это опечатка? - person Nolonar   schedule 08.08.2013