toString_bin fix
This commit is contained in:
parent
e007c46f0e
commit
936ccf6c66
@ -83,6 +83,17 @@ char* toString_float(float64 n, bool withPostfix, bool uppercase){
|
|||||||
return cptr_copy("<float>");
|
return cptr_copy("<float>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define byte_to_bits(byte) {\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>7)&1); /* 8th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>6)&1); /* 7th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>5)&1); /* 6th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>4)&1); /* 5th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>3)&1); /* 4th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>2)&1); /* 3th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>1)&1); /* 2th bit */\
|
||||||
|
str[cn++]='0' + (uint8)((byte>>0)&1); /* 1th bit */\
|
||||||
|
}
|
||||||
|
|
||||||
char* toString_bin(void* _bytes, uint32 size, bool inverse, bool withPrefix){
|
char* toString_bin(void* _bytes, uint32 size, bool inverse, bool withPrefix){
|
||||||
char* bytes=_bytes;
|
char* bytes=_bytes;
|
||||||
char* str=malloc(size*8 + (withPrefix?2:0) +1);
|
char* str=malloc(size*8 + (withPrefix?2:0) +1);
|
||||||
@ -92,23 +103,18 @@ char* toString_bin(void* _bytes, uint32 size, bool inverse, bool withPrefix){
|
|||||||
str[cn++]='b';
|
str[cn++]='b';
|
||||||
}
|
}
|
||||||
if(inverse){
|
if(inverse){
|
||||||
for(int32 bn=size-1; bn>=0; bn--){ // byte number
|
// byte number
|
||||||
unsigned char byte=bytes[bn];
|
for(int32 bn=size-1; bn>=0; bn--)
|
||||||
for(uint8 i=0; i<8; i++)
|
byte_to_bits(bytes[bn])
|
||||||
str[cn++]='0' + (byte & (char)128>>i);
|
} else {
|
||||||
}
|
for(int32 bn=0; bn<size; bn++)
|
||||||
}
|
byte_to_bits(bytes[bn])
|
||||||
else{
|
|
||||||
for(uint32 bn=0; bn<size; bn++){
|
|
||||||
unsigned char byte=bytes[bn];
|
|
||||||
for(uint8 i=0; i<8; i++)
|
|
||||||
str[cn++]='0' + (byte & (char)128>>i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
str[cn]=0;
|
str[cn]=0;
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// converts number from 0 to F to char
|
||||||
char _4bitsHex(uint8 u, bool uppercase){
|
char _4bitsHex(uint8 u, bool uppercase){
|
||||||
switch(u){
|
switch(u){
|
||||||
case 0: case 1: case 2: case 3: case 4:
|
case 0: case 1: case 2: case 3: case 4:
|
||||||
@ -134,7 +140,8 @@ char* toString_hex(void* _bytes, uint32 size, bool inverse, bool withPrefix, boo
|
|||||||
}
|
}
|
||||||
// left to right
|
// left to right
|
||||||
if(inverse){
|
if(inverse){
|
||||||
for(int32 bn=size-1; bn>=0; bn--){ // byte number
|
// byte number
|
||||||
|
for(int32 bn=size-1; bn>=0; bn--){
|
||||||
unsigned char byte=bytes[bn];
|
unsigned char byte=bytes[bn];
|
||||||
str[cn++]=_4bitsHex(byte/16, uppercase);
|
str[cn++]=_4bitsHex(byte/16, uppercase);
|
||||||
str[cn++]=_4bitsHex(byte%16, uppercase);
|
str[cn++]=_4bitsHex(byte%16, uppercase);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user