strToHex ( string to its hex representation as string)Integer-to-hex string generatorConvert hex string to byte arrayString representation of TreeSimple string inverter programSimple string repeater programSorting a String based on its wordsGeneric Pairing Heap PerformanceHex-string representation of a byte arrayConvert hex color string to SDL ColorConvert string of hex into vector of bytes

How can bays and straits be determined in a procedurally generated map?

Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?

Problem of parity - Can we draw a closed path made up of 20 line segments...

Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?

Do I have a twin with permutated remainders?

Risk of getting Chronic Wasting Disease (CWD) in the United States?

Writing rule stating superpower from different root cause is bad writing

Fencing style for blades that can attack from a distance

Why can't I see bouncing of a switch on an oscilloscope?

Modeling an IPv4 Address

What do you call a Matrix-like slowdown and camera movement effect?

Font hinting is lost in Chrome-like browsers (for some languages )

What typically incentivizes a professor to change jobs to a lower ranking university?

Why was the small council so happy for Tyrion to become the Master of Coin?

Smoothness of finite-dimensional functional calculus

strToHex ( string to its hex representation as string)

Did Shadowfax go to Valinor?

What does "Puller Prush Person" mean?

Approximately how much travel time was saved by the opening of the Suez Canal in 1869?

Prove that NP is closed under karp reduction?

Mage Armor with Defense fighting style (for Adventurers League bladeslinger)

Email Account under attack (really) - anything I can do?

Why are 150k or 200k jobs considered good when there are 300k+ births a month?

LaTeX closing $ signs makes cursor jump



strToHex ( string to its hex representation as string)


Integer-to-hex string generatorConvert hex string to byte arrayString representation of TreeSimple string inverter programSimple string repeater programSorting a String based on its wordsGeneric Pairing Heap PerformanceHex-string representation of a byte arrayConvert hex color string to SDL ColorConvert string of hex into vector of bytes






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








3












$begingroup$


I want to convert strings to their hex representations as strings too (like hex dump programs), for example "abz" to "61627A".



char * strToHex( char * str )

int length = strlen ( str );
char * newStr = malloc( length * 2 );
if ( !newStr ) shutDown ( "can't alloc memory" ) ;

for ( int x = 0; x < length; x++)
char y = str[ x ];
sprintf ( newStr + x * 2, "%02X", y );

return newStr;



ShutDown definition is omitted here, it is a function that calls perror and exit()



I designed strToHex to be used like



char * str = "abcdefghijklmnopqrstuvwxyz";
char * hex = strToHex(str);
printf("%sn",hex);
//outputs : 6162636465666768696A6B6C6D6E6F707172737475767778797A









share|improve this question











$endgroup$







  • 2




    $begingroup$
    I'd be really interested to see what shutdown(char* msg) does.
    $endgroup$
    – pacmaninbw
    2 hours ago










  • $begingroup$
    In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
    $endgroup$
    – Neil Edelman
    1 hour ago

















3












$begingroup$


I want to convert strings to their hex representations as strings too (like hex dump programs), for example "abz" to "61627A".



char * strToHex( char * str )

int length = strlen ( str );
char * newStr = malloc( length * 2 );
if ( !newStr ) shutDown ( "can't alloc memory" ) ;

for ( int x = 0; x < length; x++)
char y = str[ x ];
sprintf ( newStr + x * 2, "%02X", y );

return newStr;



ShutDown definition is omitted here, it is a function that calls perror and exit()



I designed strToHex to be used like



char * str = "abcdefghijklmnopqrstuvwxyz";
char * hex = strToHex(str);
printf("%sn",hex);
//outputs : 6162636465666768696A6B6C6D6E6F707172737475767778797A









share|improve this question











$endgroup$







  • 2




    $begingroup$
    I'd be really interested to see what shutdown(char* msg) does.
    $endgroup$
    – pacmaninbw
    2 hours ago










  • $begingroup$
    In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
    $endgroup$
    – Neil Edelman
    1 hour ago













3












3








3





$begingroup$


I want to convert strings to their hex representations as strings too (like hex dump programs), for example "abz" to "61627A".



char * strToHex( char * str )

int length = strlen ( str );
char * newStr = malloc( length * 2 );
if ( !newStr ) shutDown ( "can't alloc memory" ) ;

for ( int x = 0; x < length; x++)
char y = str[ x ];
sprintf ( newStr + x * 2, "%02X", y );

return newStr;



ShutDown definition is omitted here, it is a function that calls perror and exit()



I designed strToHex to be used like



char * str = "abcdefghijklmnopqrstuvwxyz";
char * hex = strToHex(str);
printf("%sn",hex);
//outputs : 6162636465666768696A6B6C6D6E6F707172737475767778797A









share|improve this question











$endgroup$




I want to convert strings to their hex representations as strings too (like hex dump programs), for example "abz" to "61627A".



char * strToHex( char * str )

int length = strlen ( str );
char * newStr = malloc( length * 2 );
if ( !newStr ) shutDown ( "can't alloc memory" ) ;

for ( int x = 0; x < length; x++)
char y = str[ x ];
sprintf ( newStr + x * 2, "%02X", y );

return newStr;



ShutDown definition is omitted here, it is a function that calls perror and exit()



I designed strToHex to be used like



char * str = "abcdefghijklmnopqrstuvwxyz";
char * hex = strToHex(str);
printf("%sn",hex);
//outputs : 6162636465666768696A6B6C6D6E6F707172737475767778797A






beginner c strings






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 22 mins ago









mdfst13

17.9k62257




17.9k62257










asked 3 hours ago









Accountant مAccountant م

1927




1927







  • 2




    $begingroup$
    I'd be really interested to see what shutdown(char* msg) does.
    $endgroup$
    – pacmaninbw
    2 hours ago










  • $begingroup$
    In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
    $endgroup$
    – Neil Edelman
    1 hour ago












  • 2




    $begingroup$
    I'd be really interested to see what shutdown(char* msg) does.
    $endgroup$
    – pacmaninbw
    2 hours ago










  • $begingroup$
    In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
    $endgroup$
    – Neil Edelman
    1 hour ago







2




2




$begingroup$
I'd be really interested to see what shutdown(char* msg) does.
$endgroup$
– pacmaninbw
2 hours ago




$begingroup$
I'd be really interested to see what shutdown(char* msg) does.
$endgroup$
– pacmaninbw
2 hours ago












$begingroup$
In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
$endgroup$
– Neil Edelman
1 hour ago




$begingroup$
In the use case that was provided, since you can effectively predict the size, I would think it would be more natural to have a string buffer and the size passed in instead of creating it dynamically.
$endgroup$
– Neil Edelman
1 hour ago










1 Answer
1






active

oldest

votes


















2












$begingroup$

Formatting



Most C formatting guides do not include spaces around the arguments to function calls, nor the expressions within an if-statement. For an example of a C style most C programmers would find acceptable, see OpenBSD's style(9) manual.



I choose to associate * with the variable name, rather than floating between the type and name. This disambiguates the following example:



int *a, b;


Here, a is a pointer to an integer, but b is only an integer. By moving the asterisk next to the name, it makes this clearer.



int length = strlen ( str );
char * newStr = malloc (length * 2 );
if ( !newStr) shutDown ( "can't allocate memory" ) ;


Becomes:



int const len = strlen(str);
char *const new_str = malloc(len * 2);

if (new_str == NULL)
shutDown("can't allocate memory");



Error checking



Rather than calling shutDown() and exit()ing the program, you should instead return an error value which can be checked by the caller of str_to_hex(). Because you return a pointer, you can return NULL to indicate an error occurred and the caller should check errno.



Likewise, on some systems your program can incorrectly exit when length == 0. If we look at the manual page for malloc(3):




Return Value



The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc() with a size of zero, or by a successful call to calloc() with nmemb or size equal to zero.




So by returning NULL we account for the case where malloc(3) returns NULL on success.



if (new_str == NULL) 
shutDown("can't alloc memory");



Becomes:



if (new_str == NULL) 
return NULL;



If you choose, you can also check if str is NULL before calling strlen(). This is up to you, and it's not uncommon in C to ignore this case and leave it as user error.



Looping



Use the size_t type in your loop rather than int. size_t is guaranteed be wide enough to hold any array index, while int is not.



Using i rather than x is more common for looping variables.



The y variable isn't needed. You can simply use str[i] in its place.



In terms of performance there's likely a faster option than using sprintf(). You should look into strtol(3).



Conclusion



Here is the code I ended up with:



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *
str_to_hex(char const *const str)

size_t const len = strlen(str);

char *const new_str = malloc(len * 2);

if (new_str == NULL)
return NULL;


for (size_t i = 0; i < len; ++i)
sprintf(new_str + i * 2, "%02X", str[i]);


return new_str;


int
main(void)

char *str = "abz";
char *hex = str_to_hex(str);

if (hex == NULL && strlen(str) != 0)
/* error ... */


printf("%sn",hex);

free(hex);



Hope this helps!






share|improve this answer











$endgroup$













    Your Answer





    StackExchange.ifUsing("editor", function ()
    return StackExchange.using("mathjaxEditing", function ()
    StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
    StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
    );
    );
    , "mathjax-editing");

    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "196"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216992%2fstrtohex-string-to-its-hex-representation-as-string%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2












    $begingroup$

    Formatting



    Most C formatting guides do not include spaces around the arguments to function calls, nor the expressions within an if-statement. For an example of a C style most C programmers would find acceptable, see OpenBSD's style(9) manual.



    I choose to associate * with the variable name, rather than floating between the type and name. This disambiguates the following example:



    int *a, b;


    Here, a is a pointer to an integer, but b is only an integer. By moving the asterisk next to the name, it makes this clearer.



    int length = strlen ( str );
    char * newStr = malloc (length * 2 );
    if ( !newStr) shutDown ( "can't allocate memory" ) ;


    Becomes:



    int const len = strlen(str);
    char *const new_str = malloc(len * 2);

    if (new_str == NULL)
    shutDown("can't allocate memory");



    Error checking



    Rather than calling shutDown() and exit()ing the program, you should instead return an error value which can be checked by the caller of str_to_hex(). Because you return a pointer, you can return NULL to indicate an error occurred and the caller should check errno.



    Likewise, on some systems your program can incorrectly exit when length == 0. If we look at the manual page for malloc(3):




    Return Value



    The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc() with a size of zero, or by a successful call to calloc() with nmemb or size equal to zero.




    So by returning NULL we account for the case where malloc(3) returns NULL on success.



    if (new_str == NULL) 
    shutDown("can't alloc memory");



    Becomes:



    if (new_str == NULL) 
    return NULL;



    If you choose, you can also check if str is NULL before calling strlen(). This is up to you, and it's not uncommon in C to ignore this case and leave it as user error.



    Looping



    Use the size_t type in your loop rather than int. size_t is guaranteed be wide enough to hold any array index, while int is not.



    Using i rather than x is more common for looping variables.



    The y variable isn't needed. You can simply use str[i] in its place.



    In terms of performance there's likely a faster option than using sprintf(). You should look into strtol(3).



    Conclusion



    Here is the code I ended up with:



    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    char *
    str_to_hex(char const *const str)

    size_t const len = strlen(str);

    char *const new_str = malloc(len * 2);

    if (new_str == NULL)
    return NULL;


    for (size_t i = 0; i < len; ++i)
    sprintf(new_str + i * 2, "%02X", str[i]);


    return new_str;


    int
    main(void)

    char *str = "abz";
    char *hex = str_to_hex(str);

    if (hex == NULL && strlen(str) != 0)
    /* error ... */


    printf("%sn",hex);

    free(hex);



    Hope this helps!






    share|improve this answer











    $endgroup$

















      2












      $begingroup$

      Formatting



      Most C formatting guides do not include spaces around the arguments to function calls, nor the expressions within an if-statement. For an example of a C style most C programmers would find acceptable, see OpenBSD's style(9) manual.



      I choose to associate * with the variable name, rather than floating between the type and name. This disambiguates the following example:



      int *a, b;


      Here, a is a pointer to an integer, but b is only an integer. By moving the asterisk next to the name, it makes this clearer.



      int length = strlen ( str );
      char * newStr = malloc (length * 2 );
      if ( !newStr) shutDown ( "can't allocate memory" ) ;


      Becomes:



      int const len = strlen(str);
      char *const new_str = malloc(len * 2);

      if (new_str == NULL)
      shutDown("can't allocate memory");



      Error checking



      Rather than calling shutDown() and exit()ing the program, you should instead return an error value which can be checked by the caller of str_to_hex(). Because you return a pointer, you can return NULL to indicate an error occurred and the caller should check errno.



      Likewise, on some systems your program can incorrectly exit when length == 0. If we look at the manual page for malloc(3):




      Return Value



      The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc() with a size of zero, or by a successful call to calloc() with nmemb or size equal to zero.




      So by returning NULL we account for the case where malloc(3) returns NULL on success.



      if (new_str == NULL) 
      shutDown("can't alloc memory");



      Becomes:



      if (new_str == NULL) 
      return NULL;



      If you choose, you can also check if str is NULL before calling strlen(). This is up to you, and it's not uncommon in C to ignore this case and leave it as user error.



      Looping



      Use the size_t type in your loop rather than int. size_t is guaranteed be wide enough to hold any array index, while int is not.



      Using i rather than x is more common for looping variables.



      The y variable isn't needed. You can simply use str[i] in its place.



      In terms of performance there's likely a faster option than using sprintf(). You should look into strtol(3).



      Conclusion



      Here is the code I ended up with:



      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      char *
      str_to_hex(char const *const str)

      size_t const len = strlen(str);

      char *const new_str = malloc(len * 2);

      if (new_str == NULL)
      return NULL;


      for (size_t i = 0; i < len; ++i)
      sprintf(new_str + i * 2, "%02X", str[i]);


      return new_str;


      int
      main(void)

      char *str = "abz";
      char *hex = str_to_hex(str);

      if (hex == NULL && strlen(str) != 0)
      /* error ... */


      printf("%sn",hex);

      free(hex);



      Hope this helps!






      share|improve this answer











      $endgroup$















        2












        2








        2





        $begingroup$

        Formatting



        Most C formatting guides do not include spaces around the arguments to function calls, nor the expressions within an if-statement. For an example of a C style most C programmers would find acceptable, see OpenBSD's style(9) manual.



        I choose to associate * with the variable name, rather than floating between the type and name. This disambiguates the following example:



        int *a, b;


        Here, a is a pointer to an integer, but b is only an integer. By moving the asterisk next to the name, it makes this clearer.



        int length = strlen ( str );
        char * newStr = malloc (length * 2 );
        if ( !newStr) shutDown ( "can't allocate memory" ) ;


        Becomes:



        int const len = strlen(str);
        char *const new_str = malloc(len * 2);

        if (new_str == NULL)
        shutDown("can't allocate memory");



        Error checking



        Rather than calling shutDown() and exit()ing the program, you should instead return an error value which can be checked by the caller of str_to_hex(). Because you return a pointer, you can return NULL to indicate an error occurred and the caller should check errno.



        Likewise, on some systems your program can incorrectly exit when length == 0. If we look at the manual page for malloc(3):




        Return Value



        The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc() with a size of zero, or by a successful call to calloc() with nmemb or size equal to zero.




        So by returning NULL we account for the case where malloc(3) returns NULL on success.



        if (new_str == NULL) 
        shutDown("can't alloc memory");



        Becomes:



        if (new_str == NULL) 
        return NULL;



        If you choose, you can also check if str is NULL before calling strlen(). This is up to you, and it's not uncommon in C to ignore this case and leave it as user error.



        Looping



        Use the size_t type in your loop rather than int. size_t is guaranteed be wide enough to hold any array index, while int is not.



        Using i rather than x is more common for looping variables.



        The y variable isn't needed. You can simply use str[i] in its place.



        In terms of performance there's likely a faster option than using sprintf(). You should look into strtol(3).



        Conclusion



        Here is the code I ended up with:



        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>

        char *
        str_to_hex(char const *const str)

        size_t const len = strlen(str);

        char *const new_str = malloc(len * 2);

        if (new_str == NULL)
        return NULL;


        for (size_t i = 0; i < len; ++i)
        sprintf(new_str + i * 2, "%02X", str[i]);


        return new_str;


        int
        main(void)

        char *str = "abz";
        char *hex = str_to_hex(str);

        if (hex == NULL && strlen(str) != 0)
        /* error ... */


        printf("%sn",hex);

        free(hex);



        Hope this helps!






        share|improve this answer











        $endgroup$



        Formatting



        Most C formatting guides do not include spaces around the arguments to function calls, nor the expressions within an if-statement. For an example of a C style most C programmers would find acceptable, see OpenBSD's style(9) manual.



        I choose to associate * with the variable name, rather than floating between the type and name. This disambiguates the following example:



        int *a, b;


        Here, a is a pointer to an integer, but b is only an integer. By moving the asterisk next to the name, it makes this clearer.



        int length = strlen ( str );
        char * newStr = malloc (length * 2 );
        if ( !newStr) shutDown ( "can't allocate memory" ) ;


        Becomes:



        int const len = strlen(str);
        char *const new_str = malloc(len * 2);

        if (new_str == NULL)
        shutDown("can't allocate memory");



        Error checking



        Rather than calling shutDown() and exit()ing the program, you should instead return an error value which can be checked by the caller of str_to_hex(). Because you return a pointer, you can return NULL to indicate an error occurred and the caller should check errno.



        Likewise, on some systems your program can incorrectly exit when length == 0. If we look at the manual page for malloc(3):




        Return Value



        The malloc() and calloc() functions return a pointer to the allocated memory that is suitably aligned for any kind of variable. On error, these functions return NULL. NULL may also be returned by a successful call to malloc() with a size of zero, or by a successful call to calloc() with nmemb or size equal to zero.




        So by returning NULL we account for the case where malloc(3) returns NULL on success.



        if (new_str == NULL) 
        shutDown("can't alloc memory");



        Becomes:



        if (new_str == NULL) 
        return NULL;



        If you choose, you can also check if str is NULL before calling strlen(). This is up to you, and it's not uncommon in C to ignore this case and leave it as user error.



        Looping



        Use the size_t type in your loop rather than int. size_t is guaranteed be wide enough to hold any array index, while int is not.



        Using i rather than x is more common for looping variables.



        The y variable isn't needed. You can simply use str[i] in its place.



        In terms of performance there's likely a faster option than using sprintf(). You should look into strtol(3).



        Conclusion



        Here is the code I ended up with:



        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>

        char *
        str_to_hex(char const *const str)

        size_t const len = strlen(str);

        char *const new_str = malloc(len * 2);

        if (new_str == NULL)
        return NULL;


        for (size_t i = 0; i < len; ++i)
        sprintf(new_str + i * 2, "%02X", str[i]);


        return new_str;


        int
        main(void)

        char *str = "abz";
        char *hex = str_to_hex(str);

        if (hex == NULL && strlen(str) != 0)
        /* error ... */


        printf("%sn",hex);

        free(hex);



        Hope this helps!







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited 52 mins ago

























        answered 1 hour ago









        esoteesote

        2,93111038




        2,93111038



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Code Review Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216992%2fstrtohex-string-to-its-hex-representation-as-string%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Oświęcim Innehåll Historia | Källor | Externa länkar | Navigeringsmeny50°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.2213950°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.221393089658Nordisk familjebok, AuschwitzInsidan tro och existensJewish Community i OświęcimAuschwitz Jewish Center: MuseumAuschwitz Jewish Center

            Valle di Casies Indice Geografia fisica | Origini del nome | Storia | Società | Amministrazione | Sport | Note | Bibliografia | Voci correlate | Altri progetti | Collegamenti esterni | Menu di navigazione46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)Sito istituzionaleAstat Censimento della popolazione 2011 - Determinazione della consistenza dei tre gruppi linguistici della Provincia Autonoma di Bolzano-Alto Adige - giugno 2012Numeri e fattiValle di CasiesDato IstatTabella dei gradi/giorno dei Comuni italiani raggruppati per Regione e Provincia26 agosto 1993, n. 412Heraldry of the World: GsiesStatistiche I.StatValCasies.comWikimedia CommonsWikimedia CommonsValle di CasiesSito ufficialeValle di CasiesMM14870458910042978-6

            Typsetting diagram chases (with TikZ?) Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How to define the default vertical distance between nodes?Draw edge on arcNumerical conditional within tikz keys?TikZ: Drawing an arc from an intersection to an intersectionDrawing rectilinear curves in Tikz, aka an Etch-a-Sketch drawingLine up nested tikz enviroments or how to get rid of themHow to place nodes in an absolute coordinate system in tikzCommutative diagram with curve connecting between nodesTikz with standalone: pinning tikz coordinates to page cmDrawing a Decision Diagram with Tikz and layout manager