Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 16:34   #1
sawer5
Пользователь
 
Аватар для sawer5
 
Регистрация: 07.11.2009
Сообщений: 26
Печаль Перевод функции с JavaScript на .NET

Всем привет. Я дословно перевёл функцию на C++, но она вылетает с ошибкой в Substring(2*i, 2). Есть идеи, как исправить эту проблему?
.::JavaScript::.
Код:
function hex2blks_SHA1(hex)
{
  var len = (hex.length + 1) >> 1;
  var nblk = ((len + 8) >> 6) + 1;
  var blks = new Array(nblk * 16);
  for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(i = 0; i < len; i++)
    blks[i >> 2] |= parseInt(hex.substr(2*i, 2), 16) << (24 - (i % 4) * 8);
  blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
  blks[nblk * 16 - 1] = len * 8;
  return blks;
}
.::C++/.NET::.
Код:
array <Byte>^ HexToBytes(String^ hex)
{
    //if(hex->Length % 2 != 0) hex = "0" + hex;
    int i;
    int len = (hex->Length + 1) >> 1;
    int nblk = ((len + 8) >> 6) + 1;
    array <Byte>^ blks = gcnew array <Byte>(nblk * 16);
    for(i = 0; i < nblk * 16; i++) blks[i] = 0;
    for(i = 0; i < len; i++)
    blks[i >> 2] |= Convert::ToByte(hex->Substring(2*i, 2), 16) << (24 - (i % 4) * 8); // error
    blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
    blks[nblk * 16 - 1] = len * 8;
    return blks;
}
Заранее спасибо.
#include <sawer5>
sawer5 вне форума Ответить с цитированием
Старый 07.10.2012, 11:18   #2
sawer5
Пользователь
 
Аватар для sawer5
 
Регистрация: 07.11.2009
Сообщений: 26
Лампочка Пофиксил

Код:
array <long int>^ HexToBytes(String^ hex)
{
	if(hex->Length % 2 != 0) hex = "0" + hex;
	int i;
	int len = (hex->Length + 1) >> 1;
	int nblk = ((len + 8) >> 6) + 1;
	array <long int>^ blks = gcnew array <long int>(nblk * 16);
	for(i = 0; i < nblk * 16; i++) blks[i] = 0;

	for(i = 0; i < len; i++)
	{
		auto s = hex->Substring(2*i, 2);
		long int b = Int32::Parse(s, System::Globalization::NumberStyles::HexNumber);
		blks[i >> 2] = b << (24 - (i % 4) * 8);
	}

	blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
	blks[nblk * 16 - 1] = len * 8;
	//auto bytes = BitConverter::GetBytes(blks[i >> 2]);
	return blks;
}
#include <sawer5>
sawer5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу найти перевод тайтлов в панели управления сайтом .net Александр43 Общие вопросы .NET 0 26.07.2012 19:03
Перевод сайта с HTML/Javascript на PHP/MySQL SODUL Помощь студентам 0 15.01.2011 01:56
перевод кода из vb 6 в vb .net kama30 Общие вопросы .NET 0 24.05.2010 19:19
Перевод в HEX посредством javascript WennY JavaScript, Ajax 5 04.07.2009 23:32