C# 十进制转为4位十六进制?
答案:4 悬赏:50 手机版
解决时间 2021-03-25 03:02
- 提问者网友:战皆罪
- 2021-03-24 17:13
C# 十进制转为4位十六进制?
最佳答案
- 五星知识达人网友:从此江山别
- 2021-03-24 18:35
C#有很多格式符,你可以这样:
int i = 255;
Console.WriteLine("{0:x8}", i);
这样就会输出25的8位(四个字节)十六进制的表示。
如果你想转化成你上面的小端机的表示方式,你可以把这个8个数字两两分组,之后再反序输出就可以了哈。追问请教,255如果表示为正确的4位十六进制是FF 00 00 00 还是00 00 00 FF? 十进制100表示为64 00 00 00 还是00 00 00 64?追答对于人来说正确的是00 00 00 64
但是机器表示有两种,大端机和小端机,这个说起来就有点多了,你可以查阅下相关的资料。
补充一下:
int在内存里是占四个字节的,而两个16进制数就是一个字节,所以要表示一个int在内存中的表示,应该要用4组(即4个字节),如果仅仅展示给人看,00 00 00 64这种就可以了,如果要严格按照这个数在内存的形式来表示,可以分两种情况:也就是大端和小端。大端表示成00 00 00 64,小端表示成64 00 00 00追问大哥你好.
我是往设备里发的.要将位置信息转为4字节的16进制,试了大端的没反应.请问C#怎么将十进制转为小端表示法?感激不尽!追答格式化会输出00000064这样的字符串,你把他转化成字符数组,比如array
array[6]arrar[7] array[4]arrar[5] array[2]arrar[3] array[0]arrar[1]
就是小端表示了
int i = 255;
Console.WriteLine("{0:x8}", i);
这样就会输出25的8位(四个字节)十六进制的表示。
如果你想转化成你上面的小端机的表示方式,你可以把这个8个数字两两分组,之后再反序输出就可以了哈。追问请教,255如果表示为正确的4位十六进制是FF 00 00 00 还是00 00 00 FF? 十进制100表示为64 00 00 00 还是00 00 00 64?追答对于人来说正确的是00 00 00 64
但是机器表示有两种,大端机和小端机,这个说起来就有点多了,你可以查阅下相关的资料。
补充一下:
int在内存里是占四个字节的,而两个16进制数就是一个字节,所以要表示一个int在内存中的表示,应该要用4组(即4个字节),如果仅仅展示给人看,00 00 00 64这种就可以了,如果要严格按照这个数在内存的形式来表示,可以分两种情况:也就是大端和小端。大端表示成00 00 00 64,小端表示成64 00 00 00追问大哥你好.
我是往设备里发的.要将位置信息转为4字节的16进制,试了大端的没反应.请问C#怎么将十进制转为小端表示法?感激不尽!追答格式化会输出00000064这样的字符串,你把他转化成字符数组,比如array
array[6]arrar[7] array[4]arrar[5] array[2]arrar[3] array[0]arrar[1]
就是小端表示了
全部回答
- 1楼网友:woshuo
- 2021-03-24 20:09
如果你不要算法的话,你可以用windows自带的计算器,点击查看——选择科学型进行转换
- 2楼网友:不甚了了
- 2021-03-24 19:40
int num = 255;
var str = string.Format("{0:X8}", num);
// 输出为 000000FF追问这样子是不是错了?我的感觉是FF应该在前面追答255就是FF,使用就是 0x0000FF,但是存放在内存中有两种存放小端机或是大端机(Big-Endian 和 Little-Endian),比如你的二进制数组为 0, 255,那小端机上内存存入为 FF 00, 大端机上为 00 FF比如 0, 0, 0, 255,那应该对应00 00 FF 00 及00 00 00 FF,而不是你说的FF 00 00 00追问多谢.
我对大端机小端机不是太了解.现在是急用.如果用C#将255表示为00 00 FF 00呢?追答不好意思,刚刚我的表述有问题,如果在32位小端机下 0, 0, 0, 25 => FF 00 00 00。
MythYsJh 表描正确。
你应该有一个字节数组,byte[] ,然后在32位小端机表述应该是每4个byte取一次,最后不足四位用0在前面补足,然后如下输出
string.Format("{3:X2} {2:X2} {1:X2} {0:X2}", byte[0], byte[1], byte[2], byte[3]);
var str = string.Format("{0:X8}", num);
// 输出为 000000FF追问这样子是不是错了?我的感觉是FF应该在前面追答255就是FF,使用就是 0x0000FF,但是存放在内存中有两种存放小端机或是大端机(Big-Endian 和 Little-Endian),比如你的二进制数组为 0, 255,那小端机上内存存入为 FF 00, 大端机上为 00 FF比如 0, 0, 0, 255,那应该对应00 00 FF 00 及00 00 00 FF,而不是你说的FF 00 00 00追问多谢.
我对大端机小端机不是太了解.现在是急用.如果用C#将255表示为00 00 FF 00呢?追答不好意思,刚刚我的表述有问题,如果在32位小端机下 0, 0, 0, 25 => FF 00 00 00。
MythYsJh 表描正确。
你应该有一个字节数组,byte[] ,然后在32位小端机表述应该是每4个byte取一次,最后不足四位用0在前面补足,然后如下输出
string.Format("{3:X2} {2:X2} {1:X2} {0:X2}", byte[0], byte[1], byte[2], byte[3]);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯