Hello all,
OS XPsp3 :
I'm using wsprintfA (user32) with the format-string "%010I64d" to output
a provided 64-bit number. Which works.
The thing is that I would like to see a "+" sign for the positive numbers, and I can't seem to do it. No matter where I put a "+" symbol in the format string the output breaks.
Question : is there a way to get wsprintfA to include a plus sign when displaying decimal numbers, and if so what is it ?
Remark : I've also tried sprintf (crtdll), but it doesn't seem to understand either "%I64d" or "%lld".
Remark #2 : wsprintfA doesn't understand "%+d" either. :-|
Regards,
Rudy Wieser
`+` is never part of format control string in the first place.
It'd just be treated as literal text.
Any idea how to have sprintf (crtdll) print a 64-bit decimal value ?
Scratch that question.
JJ,
[quote=me]
Scratch that question.
Scratch that. I'd forgotten that I had changed my test value, and caused it to fit into 4 bytes. Changing it back to 5E+10 the displayed result showed again a truncated 32-bit result
Strange that "%lld" was not rejected as unrecognised though ...
So, the question still stands :
Any idea how to have sprintf (crtdll) print a 64-bit decimal value ?
Regards,
Rudy Wieser
Generated 45 characters
Pack my box with +5000000000000 liquor jugs
Paul,
Generated 45 characters
Pack my box with +5000000000000 liquor jugs
Hmmm.... It works for you, but not for me. Did you use XP or some other, later version ?
By the way, quite the box you have there. :-)
Regards,
Rudy Wieser
The "w" stands for "wombat" rather than "wide".
So I switched to another print variant that a couple of posts suggested
would be a successor to it.
+ + + + + + + + + + + + + + + + + + + + + + + + + +
rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa
EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA
Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE
Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
On 10.01.2026 01:06, Emoji User wrote:
+ + + + + + + + + + + + + + + + + + + + + + + + + +
rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa >> EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA
Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE
Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
Content-Transfer-Encoding: 8bit
LOL
On 10.01.2026 04:43, Schugo wrote:
On 10.01.2026 01:06, Emoji User wrote:err..
+ + + + + + + + + + + + + + + + + + + + + + + + + +
rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa >>> EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA
Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE
Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
Content-Transfer-Encoding: 8bit
LOL
Content-Type: text/plain;
+ + + + + + + + + + + + + + + + + + + + + + + + + +
|o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa |o+orCa
|#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++ |#++-i++
|#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a |#++-i+a
|#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A |#++-i+A
|#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC| |#++-irC|
|#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E |#++-i-E
|#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi |#++-irCi
|#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4
|#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4 |#++-orCy|ore4-i|#++rCY-4
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Da hast du UTF-8 zu setzen vergessen.
On 10.01.2026 04:43, Schugo wrote:
On 10.01.2026 01:06, Emoji User wrote:err..
+ + + + + + + + + + + + + + + + + + + + + + + + + +
rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa rLa >>> EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA EfiA
Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie Efie
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii Efii
EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE EfiE
Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic Efic
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4 EfoarCiEfo4
Content-Transfer-Encoding: 8bit
LOL
Content-Type: text/plain;
I just did a few tests with CRTDLL sprintf, NTDDL sprintf and USER32 wsprintf, and I must say I did not extpect all three to behave differently -
Are you really using CRTDLL, not MSVCRT?
CRTDLL is the version from 1993, NT 3.1. The compiler at that
time did not support 64 bit integers.
that came later with Visual C++ 2.0 and MSVCRT20.DLL.
So I'm not surprised that CRTDLL wouldn't recognize these
format strings.
Also, my version has a timestamp of september 2001. Young enough to be aware of the existance of 64-bit integers.
Those are specific programming-language related DLLs.
For the record : I'm an Assembly programmer. :-)
These DLLs are constructed by forwarding any unchanged implementation
to a "current" DLL, while containing "old" implementations as local
to CRTDLL.
Those are specific programming-language related DLLs.
Yeah, I know why you'd feel that way, but...they're part
of Windows now.
Note for example that there's no 64 bit CRTDLL, because it made
no sense to have a frozen-in-time 1993 version for an ABI that
launched in 2005.
For the record : I'm an Assembly programmer. :-)
I've been having a lot of fun with 16 bit assembly recently too,
but rarely needed to in 32 bit.
All my 32 bit assembly is to implement 64 bit math so I don't
need Microsoft's CRT :)
All my 32 bit assembly is to implement 64 bit math so I don't
need Microsoft's CRT :)
I've been "at it" since DOS 3.3 . My first "hello world" program was a few hundred bytes. My thanwhile C program was 30 KByte (and that in the time of 720 KByte floppies!). At that time my choice was clear.
:-) I did the same in my 16-bit time, and just updated it when the 32-bit time arrived. I think I still have the multiplication and division routines for numbers of an arbitrary byte length.
You know that there are a number of RtlLargeInteger* functions available in NTDLL ? And as that one gets loaded as part of KERNEL32 ...
My thanwhile C program was 30 KByte ... At that time my choicewas clear.
Let me guess: you were using QuickC?
QuickC always seemed shockingly bad, since it didn't have
any optimizer and the linker would include any code from the
compilation unit, so binaries ended up being both huge and
full of unused, unreachable code.
Here's what I've been doing, for reference: http://www.malsmith.net/blog/os2-family-zdir/
But still, it's a "real" program in much less than 30Kb.
a 32 bit CPU can natively divide a 64 bit number by a 32 bit
number,
My long division one is still deficient
You know that there are a number of RtlLargeInteger* functions
available in NTDLL ? And as that one gets loaded as part of
KERNEL32 ...
Heh I saw them but didn't use them. You're right though, the
assembly could just implement Visual C++'s funky calling convention,
move everything around and make an OS function call.
In comp.os.ms-windows.programmer.win32 R.Wieser <address@is.invalid> wrote:[]
For the record : I'm an Assembly programmer. :-)
I've been having a lot of fun with 16 bit assembly recently too, but
rarely needed to in 32 bit. All my 32 bit assembly is to implement 64--
bit math so I don't need Microsoft's CRT :)
You can do a 64-bit division with the aid of two 32-bit divisions :
Most all NTDLL functions are STDCALL. No need to do such a conversion.
You can do a 64-bit division with the aid of two 32-bit
divisions :
Ouch, you're right; turns out I did that and forgot.
[snip]Most all NTDLL functions are STDCALL. No need to do such
a conversion.
The problem is that Visual C++ emits function calls for
extended arithmetic that aren't stdcall.
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 64 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 492937:53:49 |
| Calls: | 842 |
| Files: | 1,304 |
| Messages: | 261,666 |