草庐IT

endian-ness

全部标签

java - 通过AudioInputStream读取数据需要关心big endian和little endian吗?

我正在通过AudioInputStream将一个wav文件读入一个字节数组,AudioInputStreamaudiofile=AudioSystem.getAudioInputStream(f);byte[]audio=newbyte[numberofframes*framesize];intbytes=audiofile.read(audio);考虑到数据是按小端排列的,我是否需要排列样本的字节,还是AudioInputStream为我做这件事? 最佳答案 如果数据以超过一个字节的方式编码,例如,位深度为16或更多,无论chan

Java : DataInputStream replacement for endianness

下面是我的代码,它替换了DataInputStream以包装InputStream,但除了读取大端类型的常规方法之外,还提供了额外的方法来读取小端数据类型。如果您愿意,请随意使用它。我有以下几点保留意见。注意不改变功能的方法(读取大端类型的函数)。我无法将DataInputStream实现为基类并使用其方法,如read()、readInt()、readChar()等?我的类层次结构在这里似乎有点奇怪。这样合适吗?像readUTF()或readLine()这样的其他类型是否需要小端版本?或者这对特定程序来说是主观的?Java是如何存储boolean类型的?这也是字节顺序的主观因素吗?感谢

C 包装器的成员函数的 c++ const-ness

我有一个对象,在最基本的层面上看起来像这样:#includeclassx_link{public:x_link(){display_=XOpenDisplay(NULL);}~x_link(){XCloseDisplay(display_);}Display*display_ptr()const{returndisplay_;}private:Display*display_;};我想知道在这种情况下“const”x_link::display_ptr()应该如何。这个老问题,Shouldmemberfunctionsbe“const”iftheyaffectlogicalstate,

c++ - 在 C++ 中添加 const-ness

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Istheresomeninjatricktomakeavariableconstantafteritsdeclaration?考虑以下最小示例:voidMutateData(std::string&);intmain(){std::stringdata="somethingthatmakessensetohumans.";::MutateData(data);//Mutates'data'--e.g.,onlychangestheorderofthecharacters.//Atthispoint,'dat

c++ - 非成员函数 begin()/cbegin() 及其constexpr-ness

C++11引入了没有constexpr-说明符的std::begin()非成员函数,然后C++14更新为constexpr-std::begin()用于数组类型(T(&)[N])并附加constexpr-std::cbegin()用于通用容器类型(constC&).引自http://en.cppreference.com/w/cpp/iterator/begintemplateconstexprT*begin(T(&array)[N]);//(sinceC++14)templateconstexprautocbegin(constC&c)->decltype(std::begin(c)

c++ - Little Endian - Big Endian 问题

小端与大端大字节序=0x31014950小字节序=0x50490131但是使用这个方法inlineunsignedintendian_swap(unsignedint&x){return(((x&0x000000FF)>8)|((x&0xFF000000)>>24));}结果=0x54110131我花了很多时间尝试很多类似的方法,甚至是像这样的库unsignedlong_byteswap_ulong(unsignedlongvalue);但仍然没有运气..所有返回相同的结果编辑我正在使用MicrosoftVisualStudio2008开发Little-Endian系统例子如下intm

c# - 位移位是否总是考虑 Endian 体系结构?

假设我正在从C++移植代码并需要在C#中模拟相同的位移技术:每当我执行位移时,我是否必须考虑架构的Endain-ness? 最佳答案 没有。位移是一种纯粹的代数运算。它不比乘以二更依赖于平台。平台相关的是将变量解释为字符数组的结果。 关于c#-位移位是否总是考虑Endian体系结构?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/15315425/

c++ - 使用 SFINAE 检测 C++ 中类型的 POD-ness

这里的原标题是解决VS2005C++中SFINAE错误的方法这是尝试性地使用SFINAE来为TR1中存在的is_pod模板类创建等效项(在VS2005中还没有TR1)。当模板参数是POD类型(包括基本类型和由它们构成的结构)时,它的value成员应该是true,如果不是(就像非平凡的构造函数),它应该是false。templateclassis_pod{public:typedefcharYes;typedefstruct{chara[2];}No;templatestaticYestest(int){union{TvalidPodType;}u;}templatestaticNote

C++17类模板推导const-ness

我正在尝试使用新的c++17类模板推导,在我应用const之前它似乎一切正常。这是我面临的麻烦的一个小例子:#includetemplatestructX{T_data;X(void)=default;X(T&&data):_data{data}{}constexprboolconst_x(void){returnfalse;}constexprboolconst_x(void)const{returntrue;}};templateX(T&&)->X>;intmain(void){Xa;constXb{};Xc{10};constXd{10};static_assert(!a.con

c++ - C++中文件的Big Endian和Little Endian

我正在尝试编写一些独立于处理器的代码来以大端格式编写一些文件。我在下面有一个代码示例,但我不明白为什么它不起作用。它应该做的就是让字节按大端顺序将数据的每个字节一个一个地存储起来。在我的实际程序中,我会将单个字节写入文件,因此无论处理器架构如何,我都会在文件中获得相同的字节顺序。#includeintmain(intargc,char*constargv[]){longdata=0x12345678;longbitmask=(0xFF出于某种原因,byte的值始终为0。这让我感到困惑,我正在查看调试器并看到:数据=00010010001101000101011001111000位掩码=