byte[] to decimal
От: Аноним  
Дата: 27.02.07 13:37
Оценка:
Предисловие.

Необходимо хранить в базе данных md5 хеш. Но хранить его нужно особым способом, чтобы можно было по нему сделать индекс (вариант с varchar не предлагать). Для этого надо сконвертить md5 хэш, представленный в виде byte[] (16 байт) в decimal.

Вопрос знатокам:

Как сконвертить byte[] размером 16 байт в decimal?
Re: byte[] to decimal
От: Pavel M. Россия  
Дата: 27.02.07 13:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Предисловие.


А>Необходимо хранить в базе данных md5 хеш. Но хранить его нужно особым способом, чтобы можно было по нему сделать индекс (вариант с varchar не предлагать). Для этого надо сконвертить md5 хэш, представленный в виде byte[] (16 байт) в decimal.


А>Вопрос знатокам:


А>Как сконвертить byte[] размером 16 байт в decimal?



The Decimal value type represents decimal numbers ranging from positive 79,228,162,514,264,337,593,543,950,335 to negative 79,228,162,514,264,337,593,543,950,335


Может, какждый байт хеша в циферку десимала перевести?
--------------------------
less think — do more
Re: byte[] to decimal
От: TK Лес кывт.рф
Дата: 27.02.07 13:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как сконвертить byte[] размером 16 байт в decimal?


Например, Decimal Constructor (Int32[])
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: byte[] to decimal
От: IvanDunaev  
Дата: 27.02.07 13:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как сконвертить byte[] размером 16 байт в decimal?


Buffer.BlockCopy
Re[2]: byte[] to decimal
От: Lloyd Россия  
Дата: 27.02.07 14:04
Оценка:
Здравствуйте, Pavel M., Вы писали:

А>>Как сконвертить byte[] размером 16 байт в decimal?


PM>

PM>The Decimal value type represents decimal numbers ranging from positive 79,228,162,514,264,337,593,543,950,335 to negative 79,228,162,514,264,337,593,543,950,335


PM>Может, какждый байт хеша в циферку десимала перевести?


Не всякий байт влезет в циферку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: byte[] to decimal
От: Lloyd Россия  
Дата: 27.02.07 14:10
Оценка: 6 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Как сконвертить byte[] размером 16 байт в decimal?


private static decimal Bytes2Decimal(byte[] bytes)
{
    MemoryStream ms = new MemoryStream(bytes);
    BinaryReader reader = new BinaryReader(ms);
    return reader.ReadDecimal();
}

private static byte[] Decimal2Bytes(decimal d)
{
    byte[] bytes = new byte[16];
    MemoryStream ms = new MemoryStream(bytes);
    BinaryWriter writer = new BinaryWriter(ms);
    writer.Write(d);
    writer.Flush();
    ms.Flush();
    return bytes;
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: byte[] to decimal
От: Аноним  
Дата: 27.02.07 14:13
Оценка:
Известно, что размер decimal 128 бит. Размер md5 хеша тоже 128 бит.
Кто-нибудь может привести кусок кода, как привести из одного в другое? Я пока пробую, у меня что-то не выходит. Если получится, напишу.
Re[2]: byte[] to decimal
От: Аноним  
Дата: 27.02.07 14:22
Оценка: :)
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


Спасибо, брат.
(поставьте человеку плюсик).
Re[3]: byte[] to decimal
От: Pavel M. Россия  
Дата: 27.02.07 14:43
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Pavel M., Вы писали:


А>>>Как сконвертить byte[] размером 16 байт в decimal?


PM>>

PM>>The Decimal value type represents decimal numbers ranging from positive 79,228,162,514,264,337,593,543,950,335 to negative 79,228,162,514,264,337,593,543,950,335


PM>>Может, какждый байт хеша в циферку десимала перевести?


L>Не всякий байт влезет в циферку.


надо больше отдыхать
--------------------------
less think — do more
Re[2]: byte[] to decimal
От: mogadanez Чехия  
Дата: 27.02.07 16:01
Оценка:
А>>Как сконвертить byte[] размером 16 байт в decimal?

а если посмотреть рефлектором внутрь BinaryReader и BinaryWriter то можно написать

L>
L>private static decimal Bytes2Decimal(byte[] bytes)
L>{
      return decimal.ToDecimal(bytes);
L>}

L>private static byte[] Decimal2Bytes(decimal d)
L>{
L>    byte[] bytes = new byte[16];
      decimal.GetBytes(value, bytes);
L>    return bytes;
L>}
L>
... << RSDN@Home 1.2.0 alpha rev. 662>>
Re: byte[] to decimal
От: _d_m_  
Дата: 28.02.07 02:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Предисловие.


А>Необходимо хранить в базе данных md5 хеш. Но хранить его нужно особым способом, чтобы можно было по нему сделать индекс (вариант с varchar не предлагать). Для этого надо сконвертить md5 хэш, представленный в виде byte[] (16 байт) в decimal.


А>Вопрос знатокам:


А>Как сконвертить byte[] размером 16 байт в decimal?


На уя козе баян? Храни хэш без всяких преобразований, и строй на здоровье по нему индекс. Я не знаю, что за СУБД у тебя, но если допустим, MS SQL 200x, то тип binary(16) то что надо.
Re[3]: byte[] to decimal
От: Lloyd Россия  
Дата: 28.02.07 06:26
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>а если посмотреть рефлектором внутрь BinaryReader и BinaryWriter то можно написать


L>>
L>>private static decimal Bytes2Decimal(byte[] bytes)
L>>{
M>      return decimal.ToDecimal(bytes);
L>>}

L>>private static byte[] Decimal2Bytes(decimal d)
L>>{
L>>    byte[] bytes = new byte[16];
M>      decimal.GetBytes(value, bytes);
L>>    return bytes;
L>>}
L>>


А если присмотреться получше, то можно заметить следующее:
internal static decimal ToDecimal(byte[] buffer);
internal static void GetBytes(decimal d, byte[] buffer);

Re[4]: byte[] to decimal
От: mogadanez Чехия  
Дата: 28.02.07 10:12
Оценка:
L>А если присмотреться получше, то можно заметить следующее:
L>
L>internal static decimal ToDecimal(byte[] buffer);
L>internal static void GetBytes(decimal d, byte[] buffer);
L>

L>)

ладно ладно... сдаюсь рефлекшеном не буду предлагать
... << RSDN@Home 1.2.0 alpha rev. 662>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.