2016-08-15 1 views
0

Как получить хэш-код транзакции биткойнов из любой службы. Например.Извлечь hashcode из URL-адреса транзакции биткойна

HTTPS [:] // blockchain [точка] Информация/ТХ/a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e

или

HTTPS [:] // blockchain [точка] Информация/ТХ/a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e? adv_view = 1

или

HTTPS [:] // BTC [точка] blockr [точка] И.О./TX/Информация/a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e

+0

Добро пожаловать на переполнение стека! Я редактировал форматирование вашего вопроса, чтобы улучшить читаемость, что может увеличить возможность получения полезных ответов. –

ответ

0

вручную читать из строки

К примеру, в "https://blockchain.info/tx/a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e" просто прочитайте последние 64 символа. Tx-коды всегда содержат 64 символа.

Регулярные выражения

Если у вас есть несколько услуг/веб-сайты, которые вы хотите прочитать Tx-Id, вы можете сохранить позицию, где Tx-Id начинается в строке, а затем прочитать 64 символов из там. Так как вы не сказать, какой язык программирования вы хотите использовать, я покажу пример в C++:

#include <iostream> 
#include <string> 
#include <vector> 
#include <regex> 


using namespace std; 

struct PositionInString 
{ 
    PositionInString(string h, unsigned int p) : host(h), position(p) {} 

    string host; 
    unsigned int position; 
}; 

int main() 
{ 
    vector<PositionInString> positions; 
    positions.push_back(PositionInString("blockchain.info", 27)); 
    positions.push_back(PositionInString("btc.blockr.io", 30)); 

    while(true) 
    { 
      string url; 
      cout << "Enter url: "; 
      cin >> url; 

      regex reg_ex("([a-z0-9|-]+\\.)*[a-z0-9|-]+\\.[a-z]+"); 
      smatch match; 
      string extract; 

      if (regex_search(url, match, reg_ex)) 
      { 
       extract = match[0]; 
      } 
      else 
      { 
       cout << "Could not extract." << endl; 
       continue; 
      } 



      bool found = false; 
      for(auto& v : positions) 
      { 
       if(v.host.compare(extract) == 0) 
       { 
        cout << "Tx-Id: " << url.substr(v.position, 64) << endl; 
        found = true; 
        break; 
       } 
      } 

      if(found == false) 
       cout << "Unknown host \"" << extract << "\"" << endl; 
    } 


    return 0; 
} 

Выход:

Enter url: https://blockchain.info/tx/a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e 
Tx-Id: a97aaf679880e079f80ddca53044b8cb3bd511014fb09bd28e33d5430dab4c8e 
+0

thank @Bobface, но я хочу, чтобы функция могла использовать для каждой службы с ее собственным doman. Мне не нужно собирать домен в функцию. – Ngan

+0

Затем используйте регулярное выражение, которое ищет строку с 64 символами. – Bobface

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