---
title: "Formatera text"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/83805-formatera-text"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Alpha II"
published: "2003-08-08T14:50:57.000Z"
updated: "2003-08-09T08:29:27.000Z"
replies: 7
views: 416
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/83805-formatera-text"
---

# Formatera text

## #1 — Alpha II, 2003-08-08T14:50Z

Jag skulle vilja använda sprintf för att skriva ut en BYTE i hexadecimal. Hur gör jag det? :q

Permalänk: https://www.webforum.nu/p/83805

## #2 — Alpha II, 2003-08-08T18:12Z

Ingen som kan hjälpa mig? :(

Har en array av BYTE som jag vill skriva ut varje värde av på en rad med mellanslag i mellan.
Typ:
"C4 02 FF 00 1D"

Permalänk: https://www.webforum.nu/p/1132003

## #3 — PeW, 2003-08-08T18:40Z

Du får nog använda [itoa](http://www.cplusplus.com/ref/cstdlib/itoa.html) och ange radix som 16. En array av byte är lika med en array av chars, så du får iterera arrayen och ta byte för byte, samt köra din sprintf  ;)

Permalänk: https://www.webforum.nu/p/1132024

## #4 — Alpha II, 2003-08-08T19:57Z

Testade med den här koden. Det kompilerar men kraschar. :(

```
		char hexbuf[256];

		for(int i=0;i<aLen-1;i++)
		{
			char tmpbuf[5];
			itoa(aPacket[i],tmpbuf,16);
			sprintf(hexbuf,"%s %s",hexbuf, tmpbuf);
		}
```

Permalänk: https://www.webforum.nu/p/1132074

## #5 — PeW, 2003-08-08T21:08Z

Vad är aPacket för datatyp? Om du sänder med den tas den som en integer för varje indexering (enligt itoas definition). Vilket innebär att 4 bytes läses varje gång. Om den är en array där du vill bara läsa varje byte bör du nog kopiera detta byte till en variabel av typ integer först, för att det ska fungera. I annat fall blir det fel och innan loopen är slut så läses byten som inte är definierade (vilket i bästa fall resulterar i krasch).

Permalänk: https://www.webforum.nu/p/1132101

## #6 — Alpha II, 2003-08-08T21:43Z

Efter mycket försök hit o dit lyckades jag uppnå det resultat jag ville ha. Koden blev kanske inte så snygg :l Kan man göra det på något annat sätt? Det är hemskt jobbigt o sitta o testa olika saker eftersom det är en dll fil som körs genom Diablo2 (d2hackit). Så varje gång det blir något knas kraschar hela Diablo 2 och jag får starta upp det igen, ladda d2hackit och ladda mitt plugin :(

```
		char hexbuf[256] = { '\0' };
		char hex[5] = { '\0' };

		for(int i=0;i<aLen;i++)
		{
			itoa(aPacket[i],hex,16);
			if(strlen(hex)==1)
			{
				hex[1] = hex[0];
				hex[0] = '0';
				hex[2] = '\0';
			}
			strcat(hexbuf, " ");
			strcat(hexbuf,hex);
		}

		strupr(hexbuf);
```

Permalänk: https://www.webforum.nu/p/1132112

## #7 — Pragma, 2003-08-08T23:14Z

Tjena!
Jag satt här på småtimmarna & slängde ihop lite kod som konverterar till hex med mellanrum mellan varje värde. 
Hoppas att det hjälper...

```
#include <stdio.h> // sprintf(...)
#include <string.h> // strlen(...)

int main(int argc, char* argv[])
{
	char szBuffer[256]={0};
	char hex[5]={'A','B','C','D','E'};
	char format[] = "%02hx%3.0s";

	
	for(int i =0; i < 5; i++)
		// Konvertera till bas 16 med space mellan varje hexadecimalt värde...
		// OBS!! Mellanrum läggs till även på sista elementet.
		sprintf (szBuffer+strlen(szBuffer),format,hex[i]);

	return 0;
}
```

Permalänk: https://www.webforum.nu/p/1132168

## #8 — Alpha II, 2003-08-09T08:29Z

tack :)

Permalänk: https://www.webforum.nu/p/1132239

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/83805-formatera-text
