Ярлыки

понедельник, 14 декабря 2009 г.

c++. Convert string to int.

c-style:

#include
#include
#include

int GetIntVal(string strConvert) {
int intReturn;

// NOTE: You should probably do some checks to ensure that
// this string contains only numbers. If the string is not
// a valid integer, zero will be returned.
intReturn = atoi(strConvert.c_str());

return(intReturn);
}

c++ style:

using namespace std;
string s = "123";
int i;
bool success;
istringstream myStream(s);

if (myStream>>i)
success = true;
else
success = false;

#include 
#include

int main(void) {
using namespace std;

istringstream from;
ostringstream to;
int i;

to << 15;

cout << to.str() << endl;

from = to.str();
from >> i;

cout << i << endl;

return 0;
}

четверг, 9 апреля 2009 г.

Конвертация из big-endian в little-endian и наоборот.

Конвертация из big-endian в little-endian и наоборот.

Для преобразования между сетевым порядком байтов (англ. network byte order), который всегда big-endian, и порядком байтов, использующимся на машине (англ. host byte order), стандарт POSIX предусматривает функции htonl(), htons(), ntohl(), ntohs():

  • uint32_t htonl(uint32_t hostlong); — конвертирует из текущего порядка байтов в сетевой 32-битную беззнаковую величину;
  • uint16_t htons(uint16_t hostshort); — конвертирует из текущего порядка байтов в сетевой 16-битную беззнаковую величину;
  • uint32_t ntohl(uint32_t netlong); — конвертирует из сетевого порядка байтов в текущий 32-битную беззнаковую величину;
  • uint16_t ntohs(uint16_t netshort); — конвертирует из сетевого порядка байтов в текущий 16-битную беззнаковую величину.

n-сетевой порядок байтов

h-порядок байтов хоста

s-short int

l-long int

В случае совпадения текущего порядка байтов и сетевого, функции могут быть «пустыми» (то есть, не менять порядка байтов). Стандарт также допускает, чтобы эти функции были реализованы макросами.

вторник, 7 апреля 2009 г.