передача байта [] из C # в таблицу SQL через XML - PullRequest
0 голосов
/ 29 мая 2011

Я в основном вычислил хеш SHA512 и получаю его в байтах [], все, что я хочу сделать, это сохранить его в моей БД, текущая инфраструктура такова, что мне нужно создать XML моих данных, и этот XML получает передается в SP, который вставляет данные. Таким образом, поток становится

byte [] -> string (используя BitConverter) -> XML -> двоичный (64) (используя OPENXML)

Я думаю, что это можно улучшить, но, к сожалению, я не могу изменить инфраструктуру, поэтому XML должен быть промежуточным, а также то, что у меня есть данные XML -

1031B4BFC79B4E6357FE271FF2313D37A90E29FCAAEC850E5C4044547C1184AE

становится

0x31003000330031004200340042004600430037003900420034004500360033003500370046004500320037003100460046003200330031003300440033003700

в дБ

Это не похоже на двоичную форму исходных данных. Любое объяснение того, что происходит?

Ответы [ 3 ]

2 голосов
/ 29 мая 2011

Строка, которая выходит, выглядит как Юникод с прямым порядком байтов в оригинальной шестнадцатеричной строке.

То есть, 0x3100 для «1», 0x3000 для «0», 0x3300 для «3», 0x3100 для «1», 0x4200 для «B» и т. Д.

2 голосов
/ 29 мая 2011

На вашем месте я бы не использовал BitConverter для этой цели.

вместо

Convert.FromBase64String(string s);

и

Convert.ToBase64String(byte[] inArray);

.

Если вы хотите узнать больше информации о Base64 и его структуре, посмотрите Base64 В Википедии

, и если это не поможет, предоставьте дополнительную информацию и кодваша проблема

1 голос
/ 29 мая 2011

при кодировании массива байтов в базу 64 его строковое представление оригинальных данных так что вы можете использовать Convert.FromBase64String (fieldvalue) получить исходные байтовые данные

...