Comments (1)
エンディアンの違いをを吸収するライブラリ(
https://github.com/tsuna/endian )の実装を参考にすると、1番シンプルでポータブルな実装は以下のようになる。
// swapUint64 converts a uint16 to network byte order and back.
func swapUint64(n uint64) uint64 {
return ((n & 0x00000000000000FF) << 56) |
((n & 0x000000000000FF00) << 40) |
((n & 0x0000000000FF0000) << 24) |
((n & 0x00000000FF000000) << 8) |
((n & 0x000000FF00000000) >> 8) |
((n & 0x0000FF0000000000) >> 24) |
((n & 0x00FF000000000000) >> 40) |
((n & 0xFF00000000000000) >> 56)
}
https://github.com/tsuna/endian/blob/master/little.go#L21
また、C言語ではコンパイラによっては最適化されたbswap
という関数を提供しているがこれはコンパイラ依存となる。
Regarding performance: Well this will reduce portability but MSVC, gcc and clang (same as gcc I think) all have intrinsics defined for bswap which will probably perform better than your implementations. At least on x86 they'll probably make use of the bswap instruction. So you might want to have a few #ifdef'ed alternatives for different compilers.
https://codereview.stackexchange.com/questions/64797/byte-swapping-functions
よって、前者のポータブルな実装を採用する
from bitset.
Related Issues (13)
- v0.1.0 HOT 1
- v0.3.0
- gometalinter:unsafe を使うと警告がでる
- TravisCI の QEMU 利用のリファクタリング HOT 2
- バイトスライスの GC 抑制 HOT 1
- インターフェイスと関数ポインター HOT 2
- バイトオーダーの検出 HOT 1
- Little Endian と Big Endian のエミュレート HOT 8
- バイト列の自動拡張 HOT 4
- []byte から []uint64 への変換 HOT 1
- v0.2.0 HOT 1
- バイト列の変換とあまりの部分の処理 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bitset.