簡體   English   中英

十進制到十六進制轉換:sprintf是否有問題?

[英]Decimal to hexadecimal conversion: issues with sprintf?

我有一個要求,其中一部分需要從十進制轉換為十六進制。

我更喜歡通過以下方式執行此操作:

sprintf(mcc,"%x",n);

n在這里將是一個整數。 但是我的同事說這不是一個好方法。 相反,他說要使用一個函數手動轉換小數,但是我沒有很好地解釋為什么不使用sprintf。

我使用的上述方法是否有問題?

我應該選擇手動將十進制數字轉換為十六進制的函數嗎?

只要確保由mcc指向的緩沖區足以容納所生成的字符串,我就不會發現問題。

sprintf的問題在於,很難保證緩沖區足夠大。 請改用snprintf

在這種情況下,最大可能的輸出長度很小並且很容易計算,但這並不總是那么容易,我的猜測是這就是為什么您的朋友告訴您不要使用sprintf

如果您使用的機器支持GNU擴展,那么也可以使用asprintf 這將分配堆內存,將字符串存儲在其中,然后為您提供一個指向它的指針。 只要確保在使用完字符串后就將其free

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM