tamsayısına geri dönüyorum Şimdi aradı ve deney yaptım. İstediğimi yapmak için karşılaştığım çözümlerden herhangi birini adapte edemedim.C++ tamsayı 8 char hex'e dönüştürün, ilk iki karakteri bırakın, böylece sadece 6 karakterlik bir hex ve
Amacım bir tam sayı (538214658) alıp onu 8 karakterlik bir hex dizesine dönüştürmektir (020148102). Sonra ilk iki karakteri (0148102) bırakmak ve bir harita dizisinde anahtar olarak kullandığım bir tamsayıya (1343746) dönüştürmek istiyorum.
Şimdiye kadar gördüğüm çözümler sadece bir tamsayıyı hex dizesine dönüştürür, ancak istenen rakam uzunluğunu dikkate almaz.
Console_Print("%06X", form ? form->refID : 0)
Yani belki bir dizeye depolamak için bu tekniği kullanabilirsiniz düşündüm ve sonra iostream veya sstream kullanın: Aşağıdaki kodu kullanarak sadece ilk 6 karakteri yazdırmak mümkün duyuyorum
onu bir tamsayıya dönüştürmek için kullanıyorum, ancak aramalarımın hiçbiri kullanamayacağım bir şey ortaya koymadı. Ve tüm deneylerim başarısız oldu.
Bazı yardımlar büyük memnuniyetle karşılanacaktır.
DÜZENLEME:
uint32_t GetCoreRefID(TESForm* form)
{
uint32_t iCoreRefID = 0;
if (form)
{
uint32_t iRefID = (uint32_t)(form->refID);
iCoreRefID = iRefID & 0x00ffffff;
}
return iCoreRefID;
}
İlk önerinizde olduğu gibi kısa bir şekilde de yazabilirsiniz: 'dönüş formu? 0x00ffffff & (form-> refID): 0'. Hangi tipin form-> refID olduğu hakkında hiçbir fikrim yok, ancak ek bir cast olmadan çalışmalı. Ama bu böyle bir '' '' 'operatör :-) 'demek değil, çözüm okumak daha kolay ve derleyici inanıyorum aynı kodu üretecektir. – Klaus