2017-10-13 12 views
-1

16ビットのstd :: stringを、文字列の正確なバイナリ番号を保持できるintに変換する際に問題があります。私は、税引後営業利益およびビットセットをいじりてきたが、彼らはdeciamlsまたは先頭のゼロを脱いで変換し、このバイナリ表現のバイナリstd :: stringをintに変換する

std::string str = "0011101100010101"; 
int num = 0; 
. 
. 
. 
num = 0011101100010101 // now equals 
+0

ちょうど 'のstd ::の – Slava

+0

可能な重複bitset' [Cで、intにバイナリ形式の文字列を変換](https://stackoverflow.com/questions/2343099/を使用convert-binary-format-string-to-i nt-in-c) – NineBerry

+0

@NineBerry in C++では、明示的にループを書くよりはるかに簡単に行うことができます – Slava

答えて

1

使用STDを行う方法がある::ビットセット

std::string str = "0011101100010101"; 
auto number = static_cast<uint16_t>(std::bitset<16>{ str }.to_ulong()); 

またはリテラルを使用しますあなたは文字列を必要としない場合

uint16_t b = 0b0011101100010101; 
+1

[バイナリリテラル](http://en.cppreference.com/w/cpp/language/integer_literal)は、C++ 14で導入されていることに注意してください。 – Kevin

+0

それは本当です。主要なコンパイラ(g ++、clang、msvc ...)はそれをサポートしていますが、多くの組み込み関数は拡張機能として持っています。私はあなたが立ち往生している場合は、2つの方法もありますね – Beached

関連する問題