首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将十六进制字符串拆分为字节?

如何将十六进制字符串拆分为字节?
EN

Stack Overflow用户
提问于 2012-12-18 23:57:48
回答 3查看 8.7K关注 0票数 1

因为十六进制通常用于表示像RGBA颜色模型数据这样的东西,所以我试图了解如何使用像0x11AA22BB这样的大十六进制字符串,并将其分割成不同的字节。(所以;0x11,0xAA,0x22和0xBB块,本质上.)。我知道每个十六进制数字可以直接用四位来表示。但我也不知道如何将一串比特分解成更小的组。

因此,我确信这可能有一个简单的答案。我确信这可能与将其转换为单个字节数组有关,或者使用位运算符或其他什么的,但我无法理解。我知道还存在一个关于endianness和字节是如何组织的问题(RGBA、ARBG、ABGR等),但是现在我只是想了解如何进行拆分,这样我就可以大致了解它是如何工作的。我正在使用C++,但我认为这不一定是特定于该语言的。

因此,重申一下;如何将一个像0x11AA22BB这样的大十六进制字符串拆分为0x11,0xAA,0x22,0xBB?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-19 00:01:53

这两种方式是mod/div和shift/掩码,但两者实际上是相同的。

国防部/发展部:

代码语言:javascript
运行
复制
num = 0x11aa22bb
while num > 0:
  byte = num % 0x100
  print hex(byte)
  num //= 0x100

换档/掩码:

代码语言:javascript
运行
复制
num = 0x11aa22bb
while num > 0:
  byte = num & 0xff
  print hex(byte)
  num >>=8
票数 4
EN

Stack Overflow用户

发布于 2013-08-23 12:01:55

如果您不介意离开C++,并且拥有一台Linux机器,您可以使用:

sed 's/0x/ /g‘file.hex _ sed’s/a F0-9{2}/0x& /g‘溶胶- tr -s’‘

第一个命令删除0x前缀并将其替换为空格,第二个命令将序列拆分为字节,并将前缀添加到每个部分。最后一个命令压缩空格。

请注意,您可以通过移除文件名(file.hex)在stdin上使用。

票数 0
EN

Stack Overflow用户

发布于 2015-02-23 17:43:52

代码语言:javascript
运行
复制
void splitByte(unsigned char * split, unsigned int a,int quantBytes)
{
  unsigned char aux;
  int i;
  for(i=0;i<quantBytes;i++)
  {
      split[i]=a&0x00FF; 
      a=(a>>8);
  }
  for(i=0;i<quantBytes-1;i++)
  {
      aux = split[i];
      split[i] = split[quantBytes-i-1];
      split[quantBytes-i-1] = aux;

  }
}

主要内容:无符号字符split4;splitByte(split,0 0xffffffff,4);强文本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13943481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档