[Mono-list] [patch] System.BitConverter impl

Matt Kimball matt@kimball.net
Tue, 08 Jan 2002 11:26:05 -0800 (PST)


This is a multi-part message in MIME format...

------------=_1010517965-2748-0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: binary

On Tue, 08 January 2002, "Matt Kimball" wrote
> I believe my code will do this, but it will always
> *report* that it is running on a little endian machine, right now.  This should
> probably be some sort of 'configure' derived magic, but I've just hardcoded the
> boolean variable which reports it to "Yes, you are running on a little endian
> machine."

Nevermind.  Attached is a final (I hope) version which will determine the
endianness of the platform it is running on at class load-time.

-- 
Matt Kimball
matt@kimball.net



------------=_1010517965-2748-0
Content-Type: application/octet-stream; name="BitConverter.cs"
Content-Disposition: attachment; filename="BitConverter.cs"
Content-Transfer-Encoding: base64

Ly8KLy8gU3lzdGVtLkJpdENvbnZlcnRlcgovLwovLyBBdXRob3I6Ci8vICAg
TWF0dCBLaW1iYWxsIChtYXR0QGtpbWJhbGwubmV0KQovLwoKdXNpbmcgU3lz
dGVtOwoKbmFtZXNwYWNlIFN5c3RlbSB7CglwdWJsaWMgY2xhc3MgQml0Q29u
dmVydGVyIHsKCQlzdGF0aWMgYm9vbCBBbUlMaXR0bGVFbmRpYW4oKSB7CgkJ
CWJ5dGVbXSBvbmUgPSBHZXRCeXRlcygoaW50KTEpOwoJCQlyZXR1cm4gKG9u
ZVswXSA9PSAxKTsKCQl9CgoJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgYm9v
bCBJc0xpdHRsZUVuZGlhbiA9IEFtSUxpdHRsZUVuZGlhbigpOwoKCQlwdWJs
aWMgc3RhdGljIGxvbmcgRG91YmxlVG9JbnQ2NEJpdHMoZG91YmxlIHZhbHVl
KSB7CgkJCXJldHVybiBUb0ludDY0KEdldEJ5dGVzKHZhbHVlKSwgMCk7CgkJ
fQoKCQlwdWJsaWMgc3RhdGljIGRvdWJsZSBJbnQ2NEJpdHNUb0RvdWJsZShs
b25nIHZhbHVlKSB7CgkJCXJldHVybiBUb0RvdWJsZShHZXRCeXRlcyh2YWx1
ZSksIDApOwoJCX0KCgkJdW5zYWZlIHN0YXRpYyBieXRlW10gR2V0Qnl0ZXMo
Ynl0ZSAqcHRyLCBpbnQgY291bnQpIHsKCQkJYnl0ZVtdIHJldCA9IG5ldyBi
eXRlW2NvdW50XTsKCgkJCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykgewoJCQkJcmV0W2ldID0gcHRyW2ldOwoJCQl9CgoJCQlyZXR1cm4gcmV0
OwoJCX0KCgkJdW5zYWZlIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIEdldEJ5dGVz
KGJvb2wgdmFsdWUpIHsKCQkJcmV0dXJuIEdldEJ5dGVzKChieXRlICopJnZh
bHVlLCAxKTsKCQl9CgoJCXVuc2FmZSBwdWJsaWMgc3RhdGljIGJ5dGVbXSBH
ZXRCeXRlcyhjaGFyIHZhbHVlKSB7CgkJCXJldHVybiBHZXRCeXRlcygoYnl0
ZSAqKSZ2YWx1ZSwgMik7CgkJfQoKCQl1bnNhZmUgcHVibGljIHN0YXRpYyBi
eXRlW10gR2V0Qnl0ZXMoc2hvcnQgdmFsdWUpIHsKCQkJcmV0dXJuIEdldEJ5
dGVzKChieXRlICopJnZhbHVlLCAyKTsKCQl9CgoJCXVuc2FmZSBwdWJsaWMg
c3RhdGljIGJ5dGVbXSBHZXRCeXRlcyhpbnQgdmFsdWUpIHsKCQkJcmV0dXJu
IEdldEJ5dGVzKChieXRlICopJnZhbHVlLCA0KTsKCQl9CgoJCXVuc2FmZSBw
dWJsaWMgc3RhdGljIGJ5dGVbXSBHZXRCeXRlcyhsb25nIHZhbHVlKSB7CgkJ
CXJldHVybiBHZXRCeXRlcygoYnl0ZSAqKSZ2YWx1ZSwgOCk7CgkJfQoKCQlb
Q0xTQ29tcGxpYW50KGZhbHNlKV0KCQl1bnNhZmUgcHVibGljIHN0YXRpYyBi
eXRlW10gR2V0Qnl0ZXModXNob3J0IHZhbHVlKSB7CgkJCXJldHVybiBHZXRC
eXRlcygoYnl0ZSAqKSZ2YWx1ZSwgMik7CgkJfQoKCQlbQ0xTQ29tcGxpYW50
KGZhbHNlKV0KCQl1bnNhZmUgcHVibGljIHN0YXRpYyBieXRlW10gR2V0Qnl0
ZXModWludCB2YWx1ZSkgewoJCQlyZXR1cm4gR2V0Qnl0ZXMoKGJ5dGUgKikm
dmFsdWUsIDQpOwoJCX0KCgkJW0NMU0NvbXBsaWFudChmYWxzZSldCgkJdW5z
YWZlIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIEdldEJ5dGVzKHVsb25nIHZhbHVl
KSB7CgkJCXJldHVybiBHZXRCeXRlcygoYnl0ZSAqKSZ2YWx1ZSwgOCk7CgkJ
fQoKCQl1bnNhZmUgcHVibGljIHN0YXRpYyBieXRlW10gR2V0Qnl0ZXMoZmxv
YXQgdmFsdWUpIHsKCQkJcmV0dXJuIEdldEJ5dGVzKChieXRlICopJnZhbHVl
LCA0KTsKCQl9CgoJCXVuc2FmZSBwdWJsaWMgc3RhdGljIGJ5dGVbXSBHZXRC
eXRlcyhkb3VibGUgdmFsdWUpIHsKCQkJcmV0dXJuIEdldEJ5dGVzKChieXRl
ICopJnZhbHVlLCA4KTsKCQl9CgoJCXVuc2FmZSBzdGF0aWMgdm9pZCBQdXRC
eXRlcyhieXRlICpkc3QsIGJ5dGVbXSBzcmMsIGludCBzdGFydF9pbmRleCwg
aW50IGNvdW50KSB7CgkJCWlmIChzcmMgPT0gbnVsbCkgewoJCQkJdGhyb3cg
bmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbigpOwoJCQl9CgoJCQlpZiAoc3Jj
Lkxlbmd0aCA8IHN0YXJ0X2luZGV4ICsgY291bnQpIHsKCQkJCXRocm93IG5l
dyBBcmd1bWVudE91dE9mUmFuZ2VFeGNlcHRpb24oKTsKCQkJfQoKCQkJZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CgkJCQlkc3RbaV0gPSBz
cmNbaSArIHN0YXJ0X2luZGV4XTsKCQkJfQoJCX0KCgkJdW5zYWZlIHB1Ymxp
YyBzdGF0aWMgYm9vbCBUb0Jvb2xlYW4oYnl0ZVtdIHZhbHVlLCBpbnQgc3Rh
cnRfaW5kZXgpIHsKCQkJYm9vbCByZXQ7CgoJCQlQdXRCeXRlcygoYnl0ZSAq
KSZyZXQsIHZhbHVlLCBzdGFydF9pbmRleCwgMSk7CgoJCQlyZXR1cm4gcmV0
OwoJCX0KCgkJdW5zYWZlIHB1YmxpYyBzdGF0aWMgY2hhciBUb0NoYXIoYnl0
ZVtdIHZhbHVlLCBpbnQgc3RhcnRfaW5kZXgpIHsKCQkJY2hhciByZXQ7CgoJ
CQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVlLCBzdGFydF9pbmRleCwg
Mik7CgoJCQlyZXR1cm4gcmV0OwoJCX0KCgkJdW5zYWZlIHB1YmxpYyBzdGF0
aWMgc2hvcnQgVG9JbnQxNihieXRlW10gdmFsdWUsIGludCBzdGFydF9pbmRl
eCkgewoJCQlzaG9ydCByZXQ7CgoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQs
IHZhbHVlLCBzdGFydF9pbmRleCwgMik7CgoJCQlyZXR1cm4gcmV0OwoJCX0K
CgkJdW5zYWZlIHB1YmxpYyBzdGF0aWMgaW50IFRvSW50MzIoYnl0ZVtdIHZh
bHVlLCBpbnQgc3RhcnRfaW5kZXgpIHsKCQkJaW50IHJldDsKCgkJCVB1dEJ5
dGVzKChieXRlICopJnJldCwgdmFsdWUsIHN0YXJ0X2luZGV4LCA0KTsKCgkJ
CXJldHVybiByZXQ7CgkJfQoKCQl1bnNhZmUgcHVibGljIHN0YXRpYyBsb25n
IFRvSW50NjQoYnl0ZVtdIHZhbHVlLCBpbnQgc3RhcnRfaW5kZXgpIHsKCQkJ
bG9uZyByZXQ7CgoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVlLCBz
dGFydF9pbmRleCwgOCk7CgoJCQlyZXR1cm4gcmV0OwoJCX0KCgkJW0NMU0Nv
bXBsaWFudChmYWxzZSldCgkJdW5zYWZlIHB1YmxpYyBzdGF0aWMgdXNob3J0
IFRvVUludDE2KGJ5dGVbXSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4KSB7CgkJ
CXVzaG9ydCByZXQ7CgoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVl
LCBzdGFydF9pbmRleCwgMik7CgoJCQlyZXR1cm4gcmV0OwoJCX0KCgkJW0NM
U0NvbXBsaWFudChmYWxzZSldCgkJdW5zYWZlIHB1YmxpYyBzdGF0aWMgdWlu
dCBUb1VJbnQzMihieXRlW10gdmFsdWUsIGludCBzdGFydF9pbmRleCkgewoJ
CQl1aW50IHJldDsKCgkJCVB1dEJ5dGVzKChieXRlICopJnJldCwgdmFsdWUs
IHN0YXJ0X2luZGV4LCA0KTsKCgkJCXJldHVybiByZXQ7CgkJfQoKCQlbQ0xT
Q29tcGxpYW50KGZhbHNlKV0KCQl1bnNhZmUgcHVibGljIHN0YXRpYyB1bG9u
ZyBUb1VJbnQ2NChieXRlW10gdmFsdWUsIGludCBzdGFydF9pbmRleCkgewoJ
CQl1bG9uZyByZXQ7CgoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVl
LCBzdGFydF9pbmRleCwgOCk7CgoJCQlyZXR1cm4gcmV0OwoJCX0KCgkJdW5z
YWZlIHB1YmxpYyBzdGF0aWMgZmxvYXQgVG9TaW5nbGUoYnl0ZVtdIHZhbHVl
LCBpbnQgc3RhcnRfaW5kZXgpIHsKCQkJZmxvYXQgcmV0OwoKCQkJUHV0Qnl0
ZXMoKGJ5dGUgKikmcmV0LCB2YWx1ZSwgc3RhcnRfaW5kZXgsIDQpOwoKCQkJ
cmV0dXJuIHJldDsKCQl9CgoJCXVuc2FmZSBwdWJsaWMgc3RhdGljIGRvdWJs
ZSBUb0RvdWJsZShieXRlW10gdmFsdWUsIGludCBzdGFydF9pbmRleCkgewoJ
CQlkb3VibGUgcmV0OwoKCQkJUHV0Qnl0ZXMoKGJ5dGUgKikmcmV0LCB2YWx1
ZSwgc3RhcnRfaW5kZXgsIDgpOwoKCQkJcmV0dXJuIHJldDsKCQl9CgoJCXB1
YmxpYyBzdGF0aWMgc3RyaW5nIFRvU3RyaW5nKGJ5dGVbXSB2YWx1ZSkgewoJ
CQlyZXR1cm4gVG9TdHJpbmcodmFsdWUsIDAsIHZhbHVlLkxlbmd0aCk7CgkJ
fQoKCQlwdWJsaWMgc3RhdGljIHN0cmluZyBUb1N0cmluZyhieXRlW10gdmFs
dWUsIGludCBzdGFydF9pbmRleCkgewoJCQlpZiAoc3RhcnRfaW5kZXggPj0g
dmFsdWUuTGVuZ3RoKSB7CgkJCQl0aHJvdyBuZXcgQXJndW1lbnRPdXRPZlJh
bmdlRXhjZXB0aW9uKCk7CgkJCX0KCgkJCXJldHVybiBUb1N0cmluZyh2YWx1
ZSwgc3RhcnRfaW5kZXgsIHZhbHVlLkxlbmd0aCAtIHN0YXJ0X2luZGV4KTsK
CQl9CgoJCXB1YmxpYyBzdGF0aWMgc3RyaW5nIFRvU3RyaW5nKGJ5dGVbXSB2
YWx1ZSwgaW50IHN0YXJ0X2luZGV4LCBpbnQgbGVuZ3RoKSB7CgkJCWlmICh2
YWx1ZSA9PSBudWxsKSB7CgkJCQl0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhj
ZXB0aW9uKCk7CgkJCX0KCgkJCWlmIChzdGFydF9pbmRleCA8IDAgfHwgbGVu
Z3RoIDwgMCB8fCBzdGFydF9pbmRleCArIGxlbmd0aCA+IHZhbHVlLkxlbmd0
aCkgewoJCQkJdGhyb3cgbmV3IEFyZ3VtZW50T3V0T2ZSYW5nZUV4Y2VwdGlv
bigpOwoJCQl9CgoJCQlzdHJpbmcgcmV0ID0gIiI7CgoJCQlmb3IgKGludCBp
ID0gMDsgaSA8IHZhbHVlLkxlbmd0aDsgaSsrKSB7CgkJCQlpZiAoaSA+IDAp
CgkJCQkJcmV0ID0gcmV0ICsgJy0nOwoJCQkJCgkJCQljaGFyIGhpZ2ggPSAo
Y2hhcikoKHZhbHVlW2ldID4+IDQpICYgMHgwZik7CgkJCQljaGFyIGxvdyA9
IChjaGFyKSh2YWx1ZVtpXSAmIDB4MGYpOwoKCQkJCWlmIChoaWdoIDwgMTAp
IAoJCQkJCWhpZ2ggKz0gJzAnOwoJCQkJZWxzZQoJCQkJCWhpZ2ggKz0gJ0En
OwoKCQkJCWlmIChsb3cgPCAxMCkKCQkJCQlsb3cgKz0gJzAnOwoJCQkJZWxz
ZQoJCQkJCWxvdyArPSAnQSc7CgoJCQkJcmV0ID0gcmV0ICsgaGlnaCArIGxv
dzsKCQkJfQoKCQkJcmV0dXJuIHJldDsKCQl9Cgl9Cn0K

------------=_1010517965-2748-0--