ปัญหา
วิธีการแปลงค่าฐานสิบหกเป็นค่าจำนวนเต็มโดยใช้ภาษาการเขียนโปรแกรม C?
อธิบายแนวคิด
วิธีแก้ปัญหา
ค่าเลขฐานสิบหกแสดงเป็น 16 สัญลักษณ์ 1 ถึง 9 &A ถึง F ในที่นี้ ค่าเทียบเท่าทศนิยม A ถึง F คือ 10 ถึง 15
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C สำหรับแปลงเลขฐานสิบหกเป็นจำนวนเต็มโดยใช้ฟังก์ชัน -
#include#include #include int hextodc(char *hex){ int y =0; int ธันวา =0; int x, ผม; for(i =strlen(hex) - 1; i>=0; --i)//{ if(hex[i]>='0'&&hex[i]<='9'){ x =hex[i ] - '0'; } อื่น ๆ{ x =hex[i] - 'A' + 10; } dec =dec + x * pow(16 , y);// แปลงค่าเลขฐานสิบหกเป็นค่าจำนวนเต็ม ++ y; } return dec;}int main(){ ถ่านฐานสิบหก[100]; printf("ป้อนเลขฐานสิบหก:"); scanf("%s", เลขฐานสิบหก); printf("\nทศนิยม:%d", hextodc(ฐานสิบหก)); คืนค่า 0;}
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
<ก่อน>1. ป้อนเลขฐานสิบหก:ทศนิยม A:10 2. ป้อนเลขฐานสิบหก:A12 ทศนิยม:2578คำอธิบาย
สแกนอักขระทั้งหมดของ Hex จากขวาไปซ้าย
ให้อักขระที่สแกนเป็น A.
แปลง A เป็นรูปแบบทศนิยมที่เหมาะสมและเก็บไว้ใน x
ธ.ค. =ธ.ค. + x * 16 ปี
y=y + 1.
คืนค่าทศนิยม
เราสามารถสแกนค่าเลขฐานสิบหกจากซ้ายไปขวาได้ แต่เราต้องเริ่มต้น y เป็น y =N – 1 และลดค่า y ในการวนซ้ำแต่ละครั้ง N คือความยาวของเลขฐานสิบหก