Preguntas sobre GUID: siempre es de longitud fija, y es el número medio siempre 4?

Sólo me genera un par de millones de GUID convertido en una Cadena y tiene la longitud… siempre fue el mismo. ¿Puedo confiar en esta longitud fija de la GUID cuando la conversión a String?

También, es el número medio de el GUID siempre «4», como se muestra en esta captura de pantalla?

Preguntas sobre GUID: siempre es de longitud fija, y es el número medio siempre 4?

Sólo se puede confiar en lo que la especificación dice sobre el GUID. Si la especificación no menciona una cadena de longitud fija la representación, entonces no confía en él.
El 8-4-4-4-12 formato es el estándar, ambos con MS y el OSF. MS docs decir de Guid.ToString() «El valor de este Guid, el formato siguiente: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx»
Ok, entonces son buenos.

OriginalEl autor random65537 | 2010-09-18

3 Kommentare

  1. 9

    Sí, la longitud es fija y sí, el número del medio es siempre de 4 cuando se utiliza el estándar tostring formato.
    Algunos de los bits en GUID (conocido como un UUID casi en cualquier lugar que no es de windows) se fija para indicar cosas como la versión etc..

    http://en.wikipedia.org/wiki/Uuid

    EDITAR
    Debo agregar que el «4» se aplica sólo a los Guid que se han generado de acuerdo con el Guid.NewGuid algoritmo implementado .NET. No hay nada que le impida llevar a cualquier byte[16] y la conversión de Guid. Así, sólo se puede depositar en él siendo 4 para la implementación actual del algoritmo .Net. Si usted está recibiendo el Guid de otra fuente, no se puede confiar en las 4. Una actualización .Net o posiblemente de windows(dependiendo de si .Net utiliza su propia cuenta o la de Windows’ generador) puede cambiar los números fijos de la GUID

    por ejemplo, el siguiente es completamente de código de trabajo y no tienen la 4 posición:

            var rand = new Random();
            var byteArray = new byte[16];
            rand.NextBytes(byteArray);
            var g = new Guid(byteArray);
    El 4 es el número de versión. Depende de cómo se ha generado, no ¿cómo se puede convertir en una cadena.
    Si se muestra el GUID como base-10 número, no sería un 4 en esa posición siempre. La mente, haciendo que sería una locura, es que se PODÍA.
    para acortar la longitud de la cadena, un semi – truco común es hacer una base de 64 conversión, en el que caso de que la cadena no tendría el 4 en la posición correcta, se podría enmascarar los valores fijos. por ejemplo: Convertir.ToBase64String(guid.ToByteArray());
    Leonardo – Le Base64 GUID siempre tienen la misma longitud?
    MakerOfThings7: un GUID es, por definición, de 128 bits. Cualquier razonable algoritmo para la conversión de una a una cadena siempre se generan cadenas de la misma longitud.

    OriginalEl autor Jim L

  2. 3

    De la documentación sobre Guid.ToString (sin parámetros):

    El valor de este Guid, con el formato
    de la siguiente manera:
    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    donde el valor de la GUID es
    representada como una serie de minúsculas
    dígitos hexadecimales en grupos de 8, 4,
    4, 4, y 12 dígitos, separados por
    guiones. Un ejemplo de un valor de retorno
    es
    «382c74c3-721d-4f34-80e5-57657b6cbc27».

    Así que la respuesta es «sí», siempre ser de la misma longitud.

    Como para el 4, es un número de versión (de acuerdo a http://en.wikipedia.org/wiki/Uuid). Cada GUID que se generan con el algoritmo de 4 en esa posición, pero mayores Guid tendrá un 1, 2 o 3. En el futuro podría tener un 5 o algo superior.

    OriginalEl autor Gabe

  3. 3

    No – un GUID no tiene que ser un tipo 4 UUID en el hecho de que muchos GUID bajo windows son UUID de la de TIPO 1.

    Tipo 1 se lleva a la primaria MAC, un reloj y una secuencia. En realidad este «Fugas» de los datos, ya que todos los UUID1s que se crean en el mismo sistema va a tener la misma MAC. Es por eso que la mayoría de los GUID de funciones de toma los datos y el hash con ella y convertirla en un hash basado en UUID

    OriginalEl autor Dominik Weber

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea