c#十六进制到位转换(c# hex to bit conversion)

我试图将64位数字的十六进制表示(例如字符串"FFFFFFFFF" )转换为二进制表示( "11111..." )。

我试过了

string result = Convert.ToString(Convert.ToUInt64(value, 16), 2);

但是这会导致一个令人困惑的编译器错误:

'System.Convert.ToString(object,System.IFormatProvider)'的最佳重载方法匹配有一些无效参数

参数2:无法从'int'转换为'System.IFormatProvider'

I'm trying to convert the hexadecimal representation of a 64-bit number (e.g., the string "FFFFFFFFF") to binary representation ("11111...").

I've tried

string result = Convert.ToString(Convert.ToUInt64(value, 16), 2);

but this results in a confusing compiler error:

The best overloaded method match for 'System.Convert.ToString(object, System.IFormatProvider)' has some invalid arguments

Argument 2: cannot convert from 'int' to 'System.IFormatProvider'

原文:https://stackoverflow.com/questions/9482420

更新时间:2020-01-16 12:01

最满意答案

可能有更好的解决方案,但请检查它是否有效:

public static string HexToBinary(string hexValue)

{

ulong number = UInt64.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

byte[] bytes = BitConverter.GetBytes(number);

string binaryString = string.Empty;

foreach (byte singleByte in bytes)

{

binaryString += Convert.ToString(singleByte, 2);

}

return binaryString;

}

最方便的方法是使用Convert.ToString(Int64, Int32) ,但ulong没有超载。 另一种解决方案是Convert.ToString(UInt64, IFormatProvider)并编写您自己的IFormatProvider。 通过查看示例,我发现了一个以二进制,八进制和十六进制字符串表示格式化数字的IFormatProvider: http : //msdn.microsoft.com/en-us/library/system.icustomformatter.aspx 。 那里的代码看起来和我提供的非常相似,所以我认为它不是一个糟糕的解决方案。

There might be a better solution, but check if this works:

public static string HexToBinary(string hexValue)

{

ulong number = UInt64.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

byte[] bytes = BitConverter.GetBytes(number);

string binaryString = string.Empty;

foreach (byte singleByte in bytes)

{

binaryString += Convert.ToString(singleByte, 2);

}

return binaryString;

}

The most convenient way would be to use Convert.ToString(Int64, Int32), but there is no overload for ulong. Another solution is Convert.ToString(UInt64, IFormatProvider) and write your own IFormatProvider. By looking at the examples I found an IFormatProvider that formats numbers in binary, octal and hex string representation: http://msdn.microsoft.com/en-us/library/system.icustomformatter.aspx. The code there looks very similar to what I provided, so I thinks its not a bad solution.

2012-02-28

相关问答

使用std::stringstream unsigned int x;

std::stringstream ss;

ss << std::hex << "fffefffe";

ss >> x;

以下示例生成-65538作为其结果: #include

#include

int main() {

unsigned int x;

std::stringstream ss;

ss << std::hex << "fffeff

...

像这样的东西: byte[] bytes = BitConverter.GetBytes(0x08fdc941);

if (BitConverter.IsLittleEndian)

{

bytes = bytes.Reverse().ToArray();

}

float myFloat = BitConverter.ToSingle(bytes, 0);

Something like this

...

string hexIpAddress = "0A010248"; // 10.1.2.72 => "0A010248"

byte[] bytes = new byte[hexIpAddress.Length / 2];

for (int i = 0; i < hexIpAddress.Length; i += 2)

bytes[i/2] = Convert.ToByte(hexIpAddress.Substring(i, 2), 16);

这导致了这个数组: bytes = {0x0

...

可能有更好的解决方案,但请检查它是否有效: public static string HexToBinary(string hexValue)

{

ulong number = UInt64.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

byte[] bytes = BitConverter.GetBytes(number);

string binaryString = string.Empt

...

我对你使用%x的猜测是, content将十六进制数编码为整数数组,而不是字符数组。 也就是说,您将content的0位数表示为'\0'或'0' ? strtol仅适用于后一种情况。 如果content确实是一个整数数组,那么下面的代码应该可以解决这个问题: hexToDec = 0;

int place = 1;

for(int i=3; i>=0; --i)

{

hexToDec += place * (unsigned int)*(content+i);

place *= 16;

}

...

每个十六进制数字映射完全位于4位,我通常记住每个位的8421个权重,所以即使记住一个转换也很容易 A = 10 = 8 + 2 = 1010 ... 5 = 4 + 1 = 0101 记住8-4-2-1的重量。 A 5

8+4+2+1 8+4+2+1

1 0 1 0 0 1 0 1

Each hex digit map exactly on 4 bit, I usually keep in mind the 8421 weights of each of these

...

解决方案是将PORTBhex更改为byte类型,并且根本不使用ToHex方法: 而不是IO.PORTBhex = ToHex(yourIntValue)使用此: IO.PORTBhex = checked((byte)yourIntValue);

如果你也可以使你的yourIntValue属于byte类型会更好。 To solution is to change PORTBhex to be of type byte and don't use that ToHex method at all:

...

你得到了正确的结果,这不是你想要的。 bin2hex()返回十六进制表示的ASCII字符串。 手册中的引用: 返回包含str的十六进制表示形式的ASCII字符串 。 所以如果你想要十六进制数,你可以使用这个: print_r(dechex(bindec("11111111")));

You get a correct result, it's just not what you want. bin2hex() returns an ASCII string of the hexadecimal

...

你应该只使用snprintf : int x = 0xDA8F;

char buf[9];

snprintf(buf, sizeof(buf), "%X", x); // Use %x for lowercase hex digits

要将数字的十六进制表示形式转换为int ,请使用strtol (它的第三个参数允许您指定基数),或者,因为您要将其分配给unsigned数据类型strtoul 。 代码看起来像这样: char* HexStr = "8ADF4B";

uint32_t Num

...

在intToHex函数中,您将反向插入字符。 试试这段代码: #include

#include

#include

#include

using namespace std;

char decToHex(int dec) {

char hex;

switch (dec) {

case 0:

hex = '0';

break;

case 1:

hex = '1';

break

...

c# 读hex_c#十六进制到位转换(c# hex to bit conversion)相关推荐

  1. php对应 c int16,PHP中十进制 和十六进制的转换问题

    $s = '9C216AFB868C'; $sb=hexdec($s) ; var_dump( $sb );//1.716673427227E+14 echo ' '; var_dump( deche ...

  2. Flutter 十六进制颜色转换

    详细使用可参考简书 Flutter颜色(Color)使用和十六进制颜色转换,这里只提供十六进制封装方法 class ColorsUtil {/// 十六进制颜色,/// hex, 十六进制值,例如:0 ...

  3. 计算机二进制、八进制、十进制、十六进制的转换(计算机基础进制的转换)及进制在线转换网址

    常用进制转换 1.进制特点 2.十进制与二进制的转换 2.1对应关系 2.2举例一:二进制1101转换十进制 2.3举例二:二进制10111转换十进制 2.3举例三:十进制45转换成二进制 2.4举例 ...

  4. 二进制、八进制、十进制、十六进制之间转换

    (一).进制之间的转换 八进制:0-7 十六进制:0-F 1.十进制 与 二进制之间的转换 (1).十进制转换为二进制,分为整数部分和小数部分 整数部分  方法:除2取余法,即每次将整数部分除以2,余 ...

  5. 十进制与二进制,八进制,十六进制的转换

    (一)数制       计算机采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径,节省设备等优点,为了便于描述,又常用八.十六进制作为二进制的缩写.特点: (1)逢n进一 ...

  6. python字符串与十六进制互相转换

    先说一种可以将字符串转换成十六进制的方法,但是这种方法目前我还没有找到反向转换的方法,也就是如何将十六进制再次转换成字符串. >>> ''.join(map(lambda messa ...

  7. 二进制、八进制、十进制和十六进制的转换

    二进制.八进制.十进制和十六进制的转换 进制概述 二进制.八进制.十进制和十六进制的组成 进制转换 其他进制到十进制 十进制到其他进制 二进制到八进制和二进制到十六进制的转换 十进制和二进制的快速转换 ...

  8. 在BASH下简单实现十进制到二进制和十六进制的转换

    #!/bin/bash #scriptname:conver #在BASH下简单实现十进制到二进制和十六进制的转换 cat<<info 1] 10=>2 2] 10=>16 i ...

  9. 简述二进制码、十进制码、BCD码、十六进制码转换的算法

    进制转换 简述二进制码.十进制码.BCD码.十六进制码转换的算法 把四字节 BCD 码 5287 转换为十六进制码 14A7H 简述二进制码.十进制码.BCD码.十六进制码转换的算法 ①二进制转十进制 ...

最新文章

  1. 计算机电源原如何确定正常,打开计算机电源后,显示屏不会点亮. 显示器没有坏....
  2. 【算法】SVM分类精度为0,结果很烂怎么办?
  3. (译)元素浮动的那些事儿
  4. 【15】docker
  5. stream of java_java8新特性之强大的Stream API
  6. (52)FPGA基础编码D触发器(一)
  7. spark学习-50-Spark的stage的划分
  8. 备份自己的myeclipse快捷键到需要的环境
  9. Windows下使用platform.pk8 和platform.x509.pem生成jks签名文件
  10. 中国最卷的公务员考试,挤满清北毕业生
  11. 从更高到更好 揭开2021阿里双11背后的技术亮点
  12. Python记录程序运行的时间
  13. java 连接 websphere_本地java类访问websphere的JNDI
  14. 码农深夜骑车逆行被拦后爆发大哭,称压力好大!
  15. STM32入门篇2之外部中断
  16. 2020,神策数据 +
  17. GNSS-RTK/INS紧组合算法
  18. 51单片机案例实操 -- 倒车雷达
  19. Matlab如何提取论文插图中的渐变色?一招轻松搞定
  20. java环境变量含义_java环境变量的配置及各环境变量的含义

热门文章

  1. 打造属于自己的underscore系列 ( 一 )
  2. Scrum卡片层次图
  3. Luogu P1087 FBI树
  4. centos7中使用yum安装tomcat以及它的启动、停止、重启
  5. PHP开发中,让var_dump调试函数输出更美观 ^_^#
  6. [C#]网络编程系列专题二:HTTP协议详解
  7. UBUNTU adb连接android设备
  8. c, c++函数名编译符号修饰符说明
  9. mogileFS 分布式存储-安装手记
  10. 怎样把DataGrid存放在ViewState中的无用数据卡掉