Argümanın işaretsiz bir karakter olduğunu hh
söylemek için kullanabilirsiniz printf
. Kullanım 0
sıfır doldurma almak ve 2
2'ye genişliğini ayarlamak için x
veya X
daha düşük / büyük harf heks karakterler için.
uint8_t a = 0x0a;
printf("%02hhX", a); // Prints "0A"
printf("0x%02hhx", a); // Prints "0x0a"
Düzenleme : Okuyucular, 2501'in bunun bir şekilde 'doğru' biçim tanımlayıcıları olmadığına dair iddiasından endişe duyuyorlarsa, printf
bağlantıyı yeniden okumalarını öneririm . Özellikle:
% C, int bağımsız değişkenini beklese de, bir variadic işlev çağrıldığında gerçekleşen tamsayı yükseltmesi nedeniyle bir char iletmek güvenlidir.
Sabit genişlikli karakter türleri (int8_t, vb.) İçin doğru dönüştürme özellikleri, başlıkta <cinttypes>
(C ++) veya <inttypes.h>
(C) tanımlanır (PRIdMAX, PRIuMAX vb.% Jd,% ju, vb . İle eşanlamlıdır) .
İşaretli ve işaretsiz hakkındaki düşüncesine gelince, bu durumda önemli değildir çünkü değerler her zaman pozitif olmalı ve işaretli bir int'e kolayca sığmalıdır. Yine de imzalı onaltılık biçim belirticisi yok.
Düzenleme 2 : ("ne zaman-yanılıyorsunuz?" Baskısı):
Gerçek C11 standardını 311. sayfada okursanız (PDF'nin 329'u) şunları bulursunuz:
ss: belirtir, takip eden bir bu d
, i
, o
, u
, x
, veya X
dönüşüm belirteci bir geçerli olduğu signed char
ya da unsigned char
bağımsız değişken (değeri bir tamsayı promosyonlara göre teşvik edilmiş olacaktır, ama değeri çevrilir signed char
veya unsigned char
baskı öncesi); veya aşağıdaki n
dönüşüm belirticisinin bir signed char
bağımsız değişkene işaretçi için geçerli olduğu .
"\xc0\xc0abc123"