[GO] C> Dezimalzahl in Hexadezimalzahl konvertieren> Sprintf () nicht verwenden

Überlegen Sie, wie Sie ohne Verwendung von sprintf () in der Sprache C von dezimal nach hexadezimal konvertieren können. Es kann eine Option geben, sprintf () nicht zu verwenden, wenn die Speicherbeschränkungen für den Mikrocomputer streng sind.

code v0.1

http://ideone.com/GsX2DR

#include <stdio.h>
#include <stdbool.h>

bool toHex1(int val, char *dstPtr){
	if (dstPtr == NULL) {
		return false;
	}
	sprintf(dstPtr, "%X", val);
	return true;
}
bool toHex2(int val, char *dstPtr) {
	if (dstPtr == NULL) {
		return false;
	}
	
	char wrkstr[5];
	static const int maxbit = 16;
	int wrkval = val;
	int bit = 0;
	while(bit <= maxbit) {
		wrkval = (val >> bit & 0xF);
		if (wrkval == 0) {
			break;
		}
		if (wrkval < 10) {
			wrkstr[bit/4] = '0' + wrkval;
		} else {
			wrkstr[bit/4] = 'A' + (wrkval - 10);
		}
//		printf("%d", wrkval);
		bit += 4;
	}
	
	int idx = bit / 4 - 1;
	while(idx >= 0) {
		dstPtr[idx] = wrkstr[bit / 4 - idx - 1];
		idx--;	
	}

	return true;		
}

int main(void) {
	int val=65534;
	char res[20];
	
	if(toHex1(val, res)) {
		printf("%d %s\n", val, res);
	}
	if(toHex2(val, res)) {
		printf("%d %s\n", val, res);
	}
	
	return 0;
}

Ergebnis


65534 FFFE
65534 FFFE

Es ist wieder etwas Kompliziertes geworden.

TODO: Ich habe einen Fehler gemacht, als der Wert 0 ist. http://ideone.com/94tjai

Code v0.2 (verbesserte Version)

@ shiracamus 'Code ist gut.

Recommended Posts

C> Dezimalzahl in Hexadezimalzahl konvertieren> Sprintf () nicht verwenden
[Python] Konvertieren Sie Dezimalzahlen in Binär-, Oktal- und Hexadezimalzahlen
Konvertieren Sie eine hexadezimale Zeichenfolge in eine Binärzeichenfolge
Konvertieren Sie die IP-Adresse in eine Dezimalzahl
Konvertieren Sie die Dezimalzahl in n-ary [Python]
Verwendung von Google Test in C-Sprache
Konvertieren Sie Rasterdaten mithilfe von Pandas in zeilenhaltige (?) Daten
Nicht viel erwähnt, wie man Pickle benutzt
Python> Tupel> (3., 1., 4.) bis 3.00000, 1.00000, 4.00000 (mit 5 Ziffern)> .join verwendet