Является ли Guid.ToByteArray() кроссплатформенным?
Я хочу хранить Guid в базе данных, которая не поддерживает тип данных Guid/uniqueidentifier, поэтому я конвертирую Guid в байтовый массив, используя метод.ToByteArray(). Тем не менее, этот метод преобразует значение строгое:
11223344-5566-7788-9900-AABBCCDDEEFF
will become
44, 33, 22, 11, 66, 55, 88, 77, 99, 00, AA, BB, CC, DD, EE, FF
Как я понимаю, это из-за порядка байтов.
Я хотел бы знать, будет ли этот метод возвращать один и тот же результат на каждой платформе (оборудование 86x, оборудование 64x, Linux, Windows и т. Д.), И не будет никаких изменений в порядке байтов, независимо от того, на какой платформе я запускаю свое программное обеспечение.
1 ответ
На ваш вопрос:
Я хотел бы знать, будет ли этот метод возвращать одинаковый результат на каждой платформе (аппаратное обеспечение 86x, 64x оборудование, Linux, Windows и т. Д.)
Да, это будет одинаково для всех платформ.
Тем не менее, этот метод преобразует значение строгое:
Заказ вернулся с ToByteArray
будет отличаться от строкового представления.
Смотрите: метод Guid.ToByteArray
Обратите внимание, что порядок байтов в возвращенном байтовом массиве отличается от строкового представления значения Guid. Порядок начальной четырехбайтовой группы и следующих двух двухбайтовых групп меняется на противоположный, тогда как порядок последней двухбайтовой группы и закрывающей шестибайтовой группы одинаков.